【发布时间】:2011-11-15 16:28:55
【问题描述】:
我在我的项目中使用全局“config.h”来定义启用/禁用功能的各种标志。我使用约定定义:
#define ENABLE_FEATURE1 0 // feature is disabled
#define ENABLE_FEATURE2 1 // feature is enabled
然后在我为它们测试的源文件中:
#if ENABLE_FEATURE1
// do something
#endif
#if ENABLE_FEATURE2
// do something
#endif
但是,有几次我忘记在测试这些标志的 cpp 文件中包含“config.h”。然后我没有收到来自预处理器的错误或警告,程序构建良好,但编译器将所有未定义的标志视为设置为零,因此该功能在该 cpp 文件中被视为禁用,而它被视为在其余的源文件中启用。
有时即使在运行时后果也不会立即显现出来。
【问题讨论】:
标签: c++ visual-studio c-preprocessor