Spec-Zone.ru › GCC 14 CPP

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API