标签:c++ erro strong logs org main error: cgi 文件
【问题描述】
1.文件test.cpp,使用major做变量名的完整代码如下:
1 #include <fstream> 2 3 struct Header { 4 int major; 5 6 Header(int mj) 7 : major(mj) { } 8 }; 9 int main(){}
2.在g++ 编译时,会产生如下错误:
DevNet_30_56_sles10sp1:/data/ackhan # g++ test.cpp test.cpp: In constructor ‘Header::Header(int)’: test.cpp:8: error: class ‘Header’ does not have any field named ‘gnu_dev_major’
【原因分析】
查阅资料发现:当在结构体内定义一个变量major,并使用参数列表major()进行初始化的时候,会和C++标准文件中定义的宏冲突,编译产生错误。具体参考 GCC Bugzilla – Bug 17130(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=17130)
【解决办法】
增加代码"#undef major"即可解决:
#include <fstream> #undef major struct Header { int major; Header(int mj) : major(mj) { } }; int main(){}
标签:c++ erro strong logs org main error: cgi 文件
原文地址:http://www.cnblogs.com/ackhan/p/7457591.html