Russian Belarusian English German Japanese Ukrainian

Рекомендации для #ifdef и #ifndef

CuBook55

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

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