C Препроцессор проверяет определенность нескольких макросов
-
12-09-2019 - |
Вопрос
Я искал на сайте, но не нашел ответа, который искал, поэтому вот очень быстрый вопрос.
Я пытаюсь сделать что-то вроде этого:
#ifdef _WIN32 || _WIN64
#include <conio.h>
#endif
Как я могу это сделать?Я знаю, что _WIN32 определен как для 32-, так и для 64-битных окон, поэтому для обнаружения окон меня вполне устраивает любой из них.Меня больше интересует, могу ли я использовать подобные логические операторы с директивами препроцессора, и если да, то как, поскольку вышеизложенное не работает.
Компилируя с помощью gcc, я получаю:
предупреждение:дополнительные токены в конце директивы #ifdef, и по сути он просто принимает первый МАКРОС и игнорирует остальные.
Решение
Пытаться:
#if defined(_WIN32) || defined(_WIN64)
// do stuff
#endif
А определенный Макрос проверяет, определено ли имя, и позволяет применять к результату логические операторы.
Другие советы