Условная компиляция основана на оценке условных символов.

Список условных директив:

ДирективаНазваниеНазвание на русском
DEFINE Определяет условный символ
ELSE Компилирует или пропускает часть текста
ENDIF Окончание блока условной компиляции
IFDEF Компилирует часть текста, если определен условный символ
IFNDEF Компилирует часть текста, если не определен условный символ
IFOPT Компилирует часть текста, если переключатель установлен в указанное состояние (+ или -)
UNDEF Снимает определение условного символа


Список символов условной компиляции:

ДирективаНазваниеНазвание на русском
CPU86 Процессор принадлежит семье 80x86
CPU87 Присутствует ли сопроцессор 80x87 во время компиляции
DPMI Указывает, что компиляция идет в защищенном режиме DOS
MSDOS Указывает, что компиляция идет в реальном режиме DOS
VER70 Номер версии Turbo Pascal
WINDOWS Указывает, что компиляция идет в среде Windows
Конструкции условной компиляции

Вы можете использовать директивы условной компиляции, чтобы генерировать различный код из одного и того же исходного текста, в зависимости от состояния условных символов.

Вы можете использовать две конструкции:
     {$IFxxx} ... {$ENDIF}
    {$IFxxx} ... {$ELSE} ... {$ENDIF}

IF ... ENDIF:
Конструкция $IFxxx ... $ENDIF заставляет компилироваться исходный текст между $IFxxx и $ENDIF только в том случае, если условие, определенное в директиве $IFxxx истинно.

Если условие ложно, то исходный текст между двумя директивами игнорируется.

IF ... ELSE ... ENDIF:
Конструкция $IFxxx ... $ELSE ... $ENDIF заставляет компилироваться исходный текст между $IFxxx и $ELSE, если условие $IFxxx истинно, и исходный текст между $ELSE и $ENDIF, если условие $IFxxx ложно.

Условные конструкции могут иметь 16 уровней вложений.

В каждом исходном файле должно быть равное количество директив $IFxxx и $ENDIF.