c++ - 我如何比较在 C++ 中分配给#define 的 bool 值

标签 c++ preprocessor-directive

我必须将日志记录添加到特定模块,这应该允许我在需要时启用和禁用日志记录。我添加了几个#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

但这会给我一个错误提示 fatal error C1017:无效的整数常量表达式

当我使用 1 和 0 而不是 true 和 false 时,上面的代码有效。 请帮忙。

最佳答案

C++ 预处理器可以测试定义值是否存在。您不需要使用 true。而不是

 #define PAINT_LOG_ENABLED   true

 #if PAINT_LOG_ENABLED == true

你可以简单地写

 #define PAINT_LOG_ENABLED

 #if PAINT_LOG_ENABLED

关于c++ - 我如何比较在 C++ 中分配给#define 的 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22191431/

相关文章:

c++ - C++ 中的 #ifdef 1 是什么

c - 如何借助 C++ 中的预处理器指令在行之间插入语句?

c++ - 比较 argv 和 L"test"不工作

c++ - 在 MacOS 上构建 conan/cmake 项目时的相对 RPATH

c++ - 检查是否定义了 uint64_t

c - #define 多行字符串

android - 在代码中包含 C++ 预处理器指令 - Android NDK

c++ - SAP ERP 与 C++ 的集成

c++ map迭代器不从第一项开始

c++ - 您可以使用 auto 在 namespace 范围内定义类静态常量吗?