- Макроподстановка (#define)
- Свойства программ (#property)
- Включение файлов (#include)
- Импорт функций (#import)
- Условная компиляция (#ifdef, #ifndef, #else, #endif)
Макроподстановка (#define, #undef)
Директивы препроцессора используются компилятором для предварительной обработки исходного кода перед его компиляцией. Директива всегда начинается со знака # (решетка), поэтому компилятор запрещает использовать данный символ в именах переменных, функций и т.д.
Каждая директива описывается отдельной записью и действует до переноса строки. Нельзя в одной записи использовать несколько директив. Если запись директивы получается слишком большой, то её можно разбить на несколько строк с помощью обратного слеша '\', в таком случае следующая строка будет считаться продолжением записи директивы.
Директива #define может быть использована для присвоения мнемонических имен выражениям. Существует две формы:
#define identifier expression // беспараметрическая форма
|
Директива #define подставляет expression вместо всех последующих найденных вхождений identifier в исходном тексте. identifier заменяется только в том случае, если он представляет собой отдельный токен. identifier не заменяется, если он является частью комментария, частью строки, или частью другого более длинного идентификатора.
Идентификатор константы подчиняется тем же правилам, что и для имен переменных. Значение может быть любого типа:
#define ABC 100
|
expression может состоять из нескольких токенов, таких как ключевые слова, константы, константные и неконстантные выражения. expression заканчивается с концом строки и не может быть перенесено на следующую строку.
Пример:
#define TWO 2
|
Параметрическая форма #define
При параметрической форме все последующие найденные вхождения identifier будут заменены на expression с учетом фактических параметров. Например,
// пример с двумя параметрами a и b
|
Обязательно заключайте параметры в круглые скобки при использовании параметров в expression, так как это позволит избежать неочевидных ошибок, которые трудно найти. Если переписать пример без использования скобок, то результат окажется совсем другой:
// пример с двумя параметрами a и b
|
При использовании параметрической формы допускается не более 8 параметров.
// правильная параметрическая форма
|
Директива #undef
Директива #undef предназначена для отмены макроса, объявленного ранее.
Пример:
#define MACRO
|
Смотри также