Учись программированию на C++ Builder бесплатно!

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

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