Директивы #if или #ifdef/#ifndef вместе с директивами #elif, #else и #endif управляют компиляцией частей исходного файла.Если указанное выражение после #if имеет ненулевое значение, в записи преобразования сохраняется группа строк, следующая сразу за директивой #if. Синтаксис условной директивы следующий:
#if константное выражение
группа операций
#elif константное выражение
группа операций
#else
группа операций
#endif
Отличие директив #ifdef/#ifndef заключается в том, что константное выражение может быть задано только с помощью #define.
У каждой директивы #if в исходном файле должна быть соответствующая закрывающая директива #endif. Между директивами #if и #endif может располагаться любое количество директив #elif, однако допускается не более одной директивы #else. Директива #else, если присутствует, должна быть последней перед директивой #endif.
Пример
#include <stdio.h>
#include <stdlib.h>
#define P 2
int main() {
system("chcp 1251");
system("cls");
#if P==1
printf("Выполняется ветка 1");
#elif P==2
printf("Выполняется ветка 2, P=%d", P);
#else
printf("Выполняется другая ветка, P=%d", P);
#endif
getchar();
return 0;
}
Результат выполнения