606_____________________________________________Глава 11

• Все используемые типы, константы, переменные, функции должны быть объ-
явлены или описаны до их первого использования. Объявления могут встреча-
ться в любом месте текста.

11.2 Директивы препроцессора

Обработка программы препроцессором происходит перед ее компиляцией. Ни
этом этапе предварительной обработки вы можете выполнить следующие дейст-
вия: включить в компилируемый файл другие файлы, определить символически'.
константы и макросы, задать режим условной компиляции программного кода и
условного выполнения директив препроцессора. Все директивы препроцессора на-
чинаются с символа # и до начала директивы в строке могут находиться только
символы пробела. Любая строка, начинающаяся с символа # воспринимается как
директива препроцессора.

Предупреждение ——————————————————————————...i......................———

В конце директив препроцессора не ставится точка с запятой.

11.2.1 Директива #indude

Директива #include применяется для включения копии указанного в директи
ве файла в то месте, где находится эта директива. Существуют три формы директи-
вы #include:

#include <имя_файла>
ttinclude "имя_файла"
tinclude идентификатор макроса

Последняя форма предполагает, что первый значащий символ после слова inc-
lude не равен ни ' < ', ни ' " '. Предполагается, что макрос, идентификатор которо-
го используется в этой форме директивы, предварительно определен и использует
одну из первых двух форм директивы #include.

Различие между первыми двумя формами директивы заключается в методе,.
поиска препроцессором включаемого файла. Если имя файла заключено в угловы^В
скобки (< и >), как это делается для включения заголовочных файлов стандартнс^И
библиотеки, то последовательность поиска препроцессором заданного файлавя^И
талогах определяется заданными каталогами включения (include directories). Есл|Н
же имя файла заключено в кавычки, препроцессор ищет файл, просматривая ката-
логи в следующей последовательности:

• каталог того файла, который содержит директиву #include

• каталоги файлов, которые включили данный файл директивой #include

• текущий каталог

• каталоги, указанные опцией компилятора /I

• каталоги, заданные переменной окружения INCLUDE

Впрочем, этот поиск производится только в случае, если имя файла указано
без пути к нему. Если же файл в директиве указан с путем, то никакие другие ка-
талоги не просматриваются.

Обработка директивы #include препроцессором сводится к тому, что директи-
ва убирается из текста и на ее место заносится копия указанного файла.

Директива #include обычно используется для включения стандартных заголо-
вочных файлов библиотек и для включения заголовочных файлов в файлы их ри-
лизации. Директива #include используется также при работе с программами, со-