码迷,mamicode.com
首页 > 编程语言 > 详细

C++使用major做变量名的问题

时间:2017-08-31 14:26:30      阅读:160      评论:0      收藏:0      [点我收藏+]

标签: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++使用major做变量名的问题

标签:c++   erro   strong   logs   org   main   error:   cgi   文件   

原文地址:http://www.cnblogs.com/ackhan/p/7457591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!