为什么 define 与 enum class 冲突?

why does define conflict with enum class?

这里是一小段代码,其中发生了冲突。有什么办法可以正确解决这个问题吗?

#define DEBUG 0

enum class TypeEnum : int
{
    DEBUG = 0,
    INFO = 1
};

这是预处理器的本质。以 # 开头的行是预处理器的命令。 #define 是定义文本替换的命令,它将在预处理时重写您的代码。在这种情况下,DEBUG 的所有实例将被替换为 0,因此代码变为:

enum class TypeEnum : int
{
    0 = 0,
    INFO = 1
};

这当然没有意义。