различие между #if определило (WIN32) и #ifdef (WIN32)

Ищите CPUID для одной опции. Могли бы быть некоторые проблемы с системами мульти-ЦП.

102
задан ubiquibacon 26 March 2014 в 14:04
поделиться

2 ответа

Если вы используете синтаксис #ifdef, удалите скобки.

Разница между ними в том, что #ifdef может использовать только одно условие,
а #if defined (NAME) может выполнять составные условия.

Например, в вашем случае:

#if defined(WIN32) && !defined(UNIX)
/* Do windows stuff */
#elif defined(UNIX) && !defined(WIN32)
/* Do linux stuff */
#else
/* Error, both can't be defined or undefined same time */
#endif
149
ответ дан 24 November 2019 в 04:29
поделиться

#ifdef проверяет, был ли определен макрос с таким именем, #if оценивает выражение и проверяет истинное значение

#define FOO 1
#define BAR 0

#ifdef FOO
#ifdef BAR
/* this will be compiled */
#endif
#endif

#if BAR
/* this won't */
#endif

#if FOO || BAR
/* this will */
#endif
23
ответ дан 24 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: