Поделиться через


Директивы #ifdef и #ifndef

Директивы препроцессора, определяющие, определена ли определенная константа препроцессора или макрос.

#ifdef идентификатор ...
#endif
#ifndef идентификатор ...
#endif

Параметры

Элемент Описание
Идентификатор
Идентификатор константы или макроса для проверка.

Комментарии

Директивы #ifdef и #ifndef можно использовать везде, где можно использовать #if . Оператор #ifdef эквивалентен директиве ) . Эти директивы проверка только для наличия или отсутствия идентификаторов, определенных с помощью директивы #define, а не для идентификаторов, объявленных в исходном коде C или C++.

Эти директивы предназначены только для совместимости с предыдущими версиями языка. Предпочтительнее использовать определенный оператор с директивой #if.

Директива #ifndef проверяет противоположность условия, проверяемого директивой #ifdef. Если идентификатор не определен, условие имеет значение true (ненулевое); в противном случае условие равно false (ноль).

Примеры

Значение идентификатора можно передать из командной строки при помощи параметра /D. Он позволяет определить до 30 макросов. Это позволяет проверить, существует ли определение, поскольку определения можно передавать из командной строки. В следующем примере это поведение используется для определения того, следует ли запускать приложение в тестовом режиме.

// PROG.CPP
#ifndef test
  #define final
#endif
int main()
{
}

При компиляции с помощью следующей команды prog.cpp будет компилироваться в тестовом режиме; в противном случае он будет компилироваться в окончательном режиме.

CL.EXE /Dtest prog.cpp

См. также раздел

Директивы препроцессора (DirectX HLSL)

#if, )