Программирование на C и C++

Онлайн справочник программиста на C и C++

Использование defined

Помимо #ifdef существует второй способ узнать, определен ли макрос. В сочетании с директивой #if можно использовать оператор времени компиляции defined. Оператор defined имеет следующий вид:

defined имя_макроса

Если имя_макроса определено, то выражение становится истинным. В противном случае оно ста­новится ложным. Например, для того, чтобы узнать, определен ли макрос MYFILE, можно ис­пользовать одну из двух команд препроцессора:

#if defined MYFILE
или
#ifdef MYFILE

Перед defined можно также поместить ! для изменения состояния. Например, следующий фраг­мент компилируется, только если DEBUG не определен.

#if ! defined DEBUG
printf ("Final version!\n");
#endif