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

Содержание

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

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

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

#if defined MYFILE

или

#ifdef MYFILE

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

#if !defined DEBUG
  printf("Окончательная версия!\n");
#endif

Единственная причина, по которой используется оператор defined, состоит в том, что с его помощью в #elif можно узнать, определено ли имя макроса.