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