[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Условная компиляция
Во время фазы препроцессора можно проверить какое-либо условие с
помощью конструкций #if, #ifdef или #ifndef. Все три формы завершаются
#endif. Дополнительно, между началом и концом конструкции может
появиться #else .
Оператор #if expression является истинным, если expression имеет
ненулевое значение.
Оператор #ifdef identifier является истинным, если identifier
определен.
Оператор #ifndef identifier является истинным, если identifier не был
определен с помощью #define или для него было указано ранее #indefine.
Если оператор #if истинен, операторы между #if и соответствующими
#else или #endif обрабатываются, а операторы между #else и #endif
(если существуют) заменяются пустыми строками.
Если проверяемое условие ложно, операторы между #if и соответствующим
#else или #endif заменяются пустыми строками. Выполняются, если
существуют, операторы между #else и #endif.
Выражение, используемое в #if может содержать любые из операторов
языка Си (логические, арифметические, отношения). Помните, что #if
SYMBOL и #if SYMBOL != 0 вырабатывают одинаковый результат.
В следующем примере Z получит значение 10, если во время препроцессии
X больше чем 3, или Y имеет ненулевое значение. X и Y - ранее
определенные параметры:
#if X > 3 || Y
#define Z 10
#else
#define Z 20
#endif

Условная компиляция привносит гибкость в процесс компиляции. С ее
помощью во время компиляции могут быть установлены определенные
параметры программы.