Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Директивы #ifdef и препроцессоры имеют тот же эффект, что #if и #ifndef директива, когда она используется с операторомdefined.
Синтаксис
#ifdefidentifier
#ifndefidentifier
Эти директивы эквивалентны следующим:
#if definedidentifier
#if !definedidentifier
Замечания
Вы можете использовать #ifdef директивы и #ifndef директивы в любом месте #if . Оператор #ifdef identifier эквивалентен #if 1 определению identifier . Это эквивалентно #if 0 тому, когда identifier не определено или не определено директивой #undef . Эти директивы проверяют наличие или отсутствие только идентификаторов, определенных с директивой #define, а не идентификаторов, объявленных в исходном коде C или C++.
Эти директивы предназначены только для совместимости с предыдущими версиями языка. Выражение defined( identifier ) константы, используемое #if с директивой, предпочтительнее.
Директива #ifndef проверяет противоположность проверяемого #ifdefусловия. Если идентификатор не определен или его определение было удалено с #undef, условие имеет значение true (nonzero). В противном случае условие не выполняется (false, значение равно 0).
Блок, относящийся только к системам Майкрософт
Идентификатор можно передать из командной строки с помощью /D параметра. Можно указать /Dдо 30 макросов.
Директива #ifdef полезна для проверки наличия определения, так как определение можно передать из командной строки. Например:
// ifdef_ifndef.CPP
// compile with: /Dtest /c
#ifndef test
#define final
#endif
Завершение блока, относящегося только к системам Майкрософт