我能用#if做什么?

时间:2012-01-04 20:55:49

标签: c++ c-preprocessor preprocessor-directive

我在 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 个答案:

答案 0 :(得分:2)

好吧,正如你已经注意到的那样,你不能那样做。做这样的事情:

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