Директивы условной компиляции и реализуемые правила включения исходного текста:
а) условное включение (аналог работы оператора if):
#if<предикат_условия>
ТЕКСТ_1
#endif
б) альтернативное включение (аналог if-else):
#if<предикат_условия>
ТЕКСТ_1
#else
ТЕКСТ_2
#endif
Виды предикатов условий:
константное_выражение ® истина, если его значение не равно нулю;
def ID ® истина, если «ID» был определен ранее оператором #define;
ndef ID ® истина, если «ID» не был определен оператором #define.
Константное_выражение отделяется от ключевого слова if разделителем, а def и ndef - нет.
Пример:
#ifdef DEBUG
print_state();
#endif
Элементы исходного текста "ТЕКСТ_1" или "ТЕКСТ_2" могут содержать любые директивы препроцессора.
Примеры:
#ifndef EOF
#define EOF -1
#endif
#if UNIT==CON
#include "conproc.c"
#else
#include "outproc.c"
#endif