我必须将日志记录添加到特定模块,这应该允许我在需要时启用和禁用日志记录。我添加了几个#defines来做到这一点。代码如下:
#define PAINT_LOG_ENABLED true
#if PAINT_LOG_ENABLED == true
#define PAINT_LOG_EXTENSIVELY true
#if PAINT_LOG_EXTENSIVELY == true
#define PAINT_LOG_FILE_NAME TEXT("paint-log-ex.log")
#else
#define PAINT_LOG_FILE_NAME TEXT("paint-log.log")
#endif
#endif
但这引起了我的错误说法 致命错误C1017:无效的整数常量表达式
当我使用1和0而不是true和false时,上面的代码有效。 请帮忙。
答案 0 :(得分:2)
c ++预处理器可以测试已定义值的存在。您无需使用true
。而不是
#define PAINT_LOG_ENABLED true
#if PAINT_LOG_ENABLED == true
你可以简单地写
#define PAINT_LOG_ENABLED
#if PAINT_LOG_ENABLED
答案 1 :(得分:0)
gcc编译它。我猜它可能与MSVC预处理器有关。
但是,如果可能的话,我建议不要使用定义,在这种情况下,您可以轻松地 通过编写类似的东西来避免使用c预处理器:
const bool PAINT_LOG_ENABLED = true;
const bool PAINT_LOG_EXTENSIVELY = PAINT_LOG_ENABLED;
const char* PAINT_LOG_FILE_NAME = PAINT_LOG_EXTENSIVELY ? "paint-log-ex.log" : "paint-log.log";