作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当我尝试通过 g++ test.cc --std=c++14
编译 test.cc 时, 我收到以下错误。
test.cc:5:26: error: expected unqualified-id before numeric constant
Colour colour = Colour::None;
测试.cc
#include "state.h"
#include <X11/X.h>
int main(){
Colour colour = Colour::None;
}
状态.h
enum class Colour { None, Black, White };
我发现 #include <X11/X.h>
, None
定义为常量
#define None 0L /* universal null resource or null atom */
令我困扰的是我已经使用了作用域解析运算符,即 Colour::None
, 指定哪个 None
我正在引用,但错误仍然发生。
最佳答案
恐怕这就是生活,它集中体现了宏之所以糟糕的原因。
一旦你有#include
d <X11/X.h>
,预处理器会分解你的源代码,编译器会看到
Colour colour = Colour::0;
这没有意义。
一个解决方法是 #undef None
包含文件后。
关于c++ - 枚举类范围解析运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47243398/
我是一名优秀的程序员,十分优秀!