Программирование.
17. Директивы препроцессора.
Директивы препроцессора – это особые инструкции, которые записаны в тексте программы на СИ и выполнены до трансляции программы. Директивы препроцессора дают возможность изменить текст программы. Среди таких действий – замена некоторых лексем в тексте, вставка текста из другого файла, запрет на трансляцию части текста и т. п. Все директивы препроцессора должны начинаться со знака #. После директив препроцессора точки с запятой быть не должно.
Директива #inсludе включает в программу содержимое определенного файла. Эта директива может быть представлена в двух формах:
#inсludе «имя файла» #inсludе <имя файла>
Имя файла должно соответствовать соглашениям операционной системы. Оно может включать в себя либо только имя файла, либо имя файла с предшествующим ему маршрутом. Когда имя файла указано в кавычках, то поиск файла производится по заданному маршруту, а при его отсутствии – в текущем каталоге. Когда имя файла задано в угловых скобках, поиск файла осуществляется в обычных директориях операционной системы, которые задаются командой РАТН.
Директива #inсludе может являться вложенной, т. е. во включаемом файле тоже может содержаться директива #inсludе, способная замещаться после включения файла, содержащего эту директиву.
Директива #inсludе часто применяется для включения в программу так называемых заголовочных файлов, которые содержат прототипы библиотечных функций, и поэтому чаще всего программы на СИ начинаются с этой директивы.
Директива #dеfinе применяется для замены часто использующихся констант, ключевых слов, операторов или выражений определенными идентификаторами. Идентификаторы, которые заменяют текстовые или числовые константы, называются именованными константами. Идентификаторы, которые заменяют фрагменты программ, называют макроопределениями, при этом макроопределения могут иметь аргументы.
Директива #dеfinе может быть записана в двух синтаксических формах:
#dеfinе идентификатор текст.
#dеfinе идентификатор (список параметров) текст.
Данная директива заменяет все дальнейшие вхождения идентификатора на текст. Подобный процесс называется макроподстановкой. Текст может быть любым фрагментом программы на СИ, а также может и отсутствовать.