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