2.2 Операция включения
Директива «#include» заставляет препроцессор C просканировать указанный файл в качестве входных данных перед продолжением остальной части текущего файла. Вывод препроцессора содержит уже сгенерированный вывод, за которым следует вывод, полученный из включённого файла, за которым следует вывод, полученный из текста после директивы «#include». Например, если у вас есть файл заголовка header.h следующего вида,
char *test (void);
и главная программа с именем program.c, использующая этот файл заголовка, выглядит так,
int x;
#include "header.h"
int
main (void)
{
puts (test ());
}
компилятор увидит ту же последовательность токенов, что и если program.c содержал бы
int x;
char *test (void);
int
main (void)
{
puts (test ());
}
Включаемые файлы не ограничиваются объявлениями и определениями макросов; это лишь типичные варианты использования. Любой фрагмент программы C может быть включён из другого файла. Файл включения может даже содержать начало оператора, которое завершается в содержащем файле, или конец оператора, который начался в включающем файле. Однако, включённый файл должен состоять из полных токенов. Комментарии и строковые литералы, которые не были закрыты к концу включённого файла, являются недопустимыми. Для восстановления после ошибки они считаются закрытыми в конце файла.
Чтобы избежать путаницы, лучше, если файлы заголовков содержат только полные синтаксические единицы — объявления или определения функций, объявления типов и т. д.
Строка, следующая за директивой «#include», всегда обрабатывается препроцессором C как отдельная строка, даже если включённый файл не содержит конечного символа новой строки.
Далее: Путь поиска, Предыдущее: Синтаксис включения, Вверх: Файлы заголовков [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-9.5.0/cpp/Include-Operation.html