Директивы препроцессора — это особые инструкции, которые записаны в тексте программы на СИ и выполнены до трансляции программы. Директивы препроцессора дают возможность изменить текст программы.
Среди таких действий — замена некоторых лексем в тексте, вставка текста из другого файла, запрет на трансляцию части текста и т. п. Все директивы препроцессора
должны начинаться со знака #. После директив препроцессора точки с запятой быть не должно.
Директива #include включает в программу содержимое определенного файла. Эта директива может
быть представлена в двух формах:
#include «имя файла»
#include <имя файла>
Имя файла должно соответствовать соглашениям
операционной системы. Оно может включать в себя
либо только имя файла, либо имя файла с предшествующим ему маршрутом. Когда имя файла указано в кавычках, то поиск файла производится по заданному
маршруту, а при его отсутствии — в текущем каталоге.
Когда имя файла задано в угловых скобках, поиск файла осуществляется в обычных директориях операци-
онной системы, которые задаются командой PATH.
Директива #include может являться вложенной,
т. е. во включаемом файле тоже может содержаться
директива #include, способная замещаться после
включения файла, содержащего эту директиву.
Директива #include часто применяется для включения в программу так называемых заголовочных фай-лов, которые содержат прототипы библиотечных
функций, и поэтому чаще всего программы на
СИ начинаются с этой директивы.
Директива #define применяется для замены часто
использующихся констант, ключевых слов, операторов
или выражений определенными идентификаторами.
Идентификаторы, которые заменяют текстовые или
числовые константы, называются именованными константами. Идентификаторы, которые заменяют фрагменты программ, называют макроопределениями, при
этом макроопределения могут иметь аргументы.
Директива #define может быть записана в двух синтаксических формах:
#define идентификатор текст
#define идентификатор (список параметров) текст
Данная директива заменяет все дальнейшие вхождения идентификатора на текст. Подобный процесс
называется макроподстановкой. Текст может быть
любым фрагментом программы на СИ, а также может и отсутствовать.