Что я могу сделать (#) с #if? - PullRequest
       11

Что я могу сделать (#) с #if?

0 голосов
/ 05 января 2012

У меня есть куча параметров конфигурации препроцессора, определенных в config.h . Я использую их так:

#if CONFIG_OPTION1
    /* do some stuff */
#endif

config.h содержит их определения:

#define CONFIG_OPTION1 _DEBUG
#define CONFIG_OPTION2 _DEBUG || (NDEBUG && _WIN64)
...

Выше не работает. Я хочу включить и выключить эти параметры конфигурации на основе конфигурации (отладка, выпуск и т. Д.) И / или других определений. Это также не работает, если я делаю:

#define CONFIG_OPTION1 defined(_DEBUG) || defined(NDEBUG)

Я никогда не попаду внутрь #if CONFIG_OPTION1, даже если условие выглядит так, как будто оно должно быть выполнено. Когда я пишу #if defined(_DEBUG), это работает нормально, но #if с макросом, поскольку условие не выполняется. Как я могу это исправить?

1 Ответ

2 голосов
/ 05 января 2012

Ну, как вы уже заметили, вы не можете так делать. Вместо этого сделайте что-нибудь подобное:

#if _DEBUG || (NDEBUG && _WIN64)
#   define CONFIG_OPTION2 1
#endif
...