Ответ 1
Try:
#if defined(_WIN32) || defined(_WIN64)
// do stuff
#endif
Определенный макрос определяет, определено или нет имя, и позволяет применять логические операторы к результату.
Я искал сайт, но не нашел ответ, который я искал, поэтому вот очень быстрый вопрос.
Я пытаюсь сделать что-то вроде этого:
#ifdef _WIN32 || _WIN64
#include <conio.h>
#endif
Как я могу это сделать? Я знаю, что _WIN32 определен как для 32-битных, так и для 64-битных окон, поэтому мне было бы хорошо, если бы для обнаружения Windows. Меня больше интересует, могу ли я использовать логические операторы, подобные этому, с препроцессорными директивами, и если да, то как, поскольку вышеупомянутое не работает.
Компиляция с gcc я получаю:
warning: дополнительные токены в конце директивы #ifdef, и в основном он просто берет первый MACRO и игнорирует остальные.
Try:
#if defined(_WIN32) || defined(_WIN64)
// do stuff
#endif
Определенный макрос определяет, определено или нет имя, и позволяет применять логические операторы к результату.
Вы должны использовать #if
и специальный оператор defined
Вы должны использовать "if defined", а не "ifdef"
#if defined _WIN32 || defined _WIN64
oops typo, вам понадобится вторая "определенная", почему ваш тест терпит неудачу. Подумайте об этом как о "определенном _WIN32", являющемся единственным утверждением, возвращающим true/false
Я думаю, что это должно быть так:
#if defined block1 || defined block2 /*or any other boolean operator*/
/*Code*/
#endif
Дополнительная информация здесь
Использование:
#if defined(A) || defined(B)
#include <whatever.h>
#endif