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