Ищите CPUID для одной опции. Могли бы быть некоторые проблемы с системами мульти-ЦП.
Если вы используете синтаксис #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
#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