Russian Belarusian English German Japanese Ukrainian

4.55

Директивы #ifdef и #ifndef выполняют одну и ту же задачу как #if при использовании директива defined (Идентификатор ).

#ifdef identifier
#ifndef identifier

// equivalent to
#if defined identifier
#if !defined identifier

Можно использовать #ifdef и #ifndef в любом месте, где #if может использоваться. Идентификатор #ifdef эквивалентен #if:
1. Идентификатор определен - 1.
2. Идентификатор не указан или не определен с #undef директивой - 0.

Эти правила проверяют только наличия или отсутствия идентификаторов, указанных с #define не для идентификаторов, объявленных в исходном коде C или C++.

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

#ifndef директива проверяет наличие условий для проверенного противоположного к #ifdef. Если идентификатор не задан или ее определение было удалено с #undef, условие имеет значение true (), т.е. не равно нулю. В противном случае условие имеет значение false (0).

Только для систем Microsoft

Идентификатор может передаваться из командной строки с помощью параметра /D. До 30 макросов может быть определено параметром /D.

Это полезно для проверки существования определения, потому что определение может передаваться из командной строки. Например:

// ifdef_ifndef.CPP
// compile with: /Dtest /c
#ifndef test
#define final
#endif

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий


Поиск по сайту