Подтвердить что ты не робот

Разница между препроцессорными директивами #if и #ifdef

В чем разница (если есть) между двумя следующими операциями управления препроцессором.

#if

и

#ifdef
4b9b3361

Ответ 1

Вы можете продемонстрировать разницу, выполнив:

#define FOO 0
#if FOO
  // won't compile this
#endif
#ifdef FOO
  // will compile this
#endif

#if проверяет значение символа, а #ifdef проверяет наличие символа (независимо от его значения).

Ответ 2

#ifdef FOO

является ярлыком для:

#if defined(FOO)

#if также может использоваться для других тестов или для более сложных условий препроцессора.

#if defined(FOO) || defined(BAR)