Разница между препроцессорными директивами #if и #ifdef
В чем разница (если есть) между двумя следующими операциями управления препроцессором.
#if
и
#ifdef
Ответы
Ответ 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)