Препроцессор

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

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");