мета-данные страницы
Препроцессор
Директивы препроцессора:
- define — задаёт макроопределение (макрос) или символическую константу
- undef — отменяет предыдущее определение
- include — вставляет текст из указанного файла
- if — осуществляет условную компиляцию при истинности константного выражения
- ifdef — осуществляет условную компиляцию при определённости символической константы
- ifndef — осуществляет условную компиляцию при неопределённости символической константы
- else — ветка условной компиляции при ложности выражения
- elif — ветка условной компиляции, образуемая слиянием else и if
- endif — конец ветки условной компиляции
- line — препроцессор изменяет номер текущей строки и имя компилируемого файла
- error — выдача диагностического сообщения
- pragma — действие, зависящее от конкретной реализации компилятора
Макросы
#define max(a,b) ((a) > (b) ? (a) : (b))
Операторы # и ##
#define make_str(bar) # bar printf(make_str(42));
преобразуется в
printf("42");
#define MakePosition(x) x##X,x##Y,x##Width,x##Height int MakePosition(Object);
преобразуется в
int ObjectX,ObjectY,ObjectWidth,ObjectHeight;
undef
После строки
#undef идентификатор
препроцессор считает, что идентификатор не определён. Это может помочь нам в случае условной компиляции.