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

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

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

Параметры

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

Remarks

Директивы #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, )