Разница между препроцессорными директивами #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)
Ответ 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)