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-8.5.0/cpp/Include-Operation.html