美文网首页
C++使用major做变量名的问题

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

作者: 韩兆辉 | 来源:发表于2017-08-31 16:06 被阅读0次

导语: 在代码书写过程中,能起出浅显易懂的变量名,也是一门劲道的功夫。

当时正在设计用户信息的存储表结构,对于“专业”最先想到的英文单词就是“major”,但是遇到一些问题,记录并解决如下。

一。问题描述:

1.使用major做变量名的测试代码如下:

#include <fstream>

struct Header {
  int major;

  Header(int mj)
    : major(mj)  { }
};
int main(){}

2.编译时,产生如下错误:

/data # 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

三。解决办法:

通过增加"#undef major",取消前置定义即可:

#include <fstream>

#undef major

struct Header {
  int major;

  Header(int mj)
    : major(mj)  { }
};
int main(){}
四。总结:

当然最好自己重新起一个名字,比如说可以用profession,哈哈!

相关文章

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

    导语: 在代码书写过程中,能起出浅显易懂的变量名,也是一门劲道的功夫。 当时正在设计用户信息的存储表结构,对于“专...

  • PHP-Zookeeper扩展安装

    问题 使用pecl安装扩展在编译extension时候会 ZOO_MAJOR_VERSION 错误,由于pecl的...

  • MAJOR 使用教程

    简介 Major 是一个轻量级变异测试工具,其工作原理主要分为两步: 在编译过程中生成+嵌入变异体 执行变异体进行...

  • C++编程:为什么要用指针,而不直接使用对象?

    问题描述 我在使用 C++ 进行面向对象开发时,我发现一个很让我非常困惑的问题:C++ 中经常出现使用对象指针,而...

  • 2020-06-21:mark

    关于java中的静态属性调用问题静态问题1、如果是本类使用,可以直接就用静态变量名。2、如果是其他类使用,可以使用...

  • C++学习笔记

    初识C++ C++标准格式 变量 作用:给一段指定的内存空间起名,方便操作这段内存。语法:数据类型 变量名 = ...

  • sass入门

    变量 变量定义 $变量名: 变量值; 变量使用 $变量名$变量名不能使用在CSS选择器和属性名中 嵌套规则 普通嵌...

  • jmeter-压力测试-自定可变参数

    添加csv config 定义变量名filename 使用变量名,${filename} 参考:https://w...

  • C++中为什么要用指针,而不直接使用对象?

    问题描述我刚从 Java 转到使用 C++ 进行面向对象开发,我发现一个很让我非常困惑的问题:C++ 中经常出现使...

  • c++类相关

    c++结构体与c结构体的区别 c语言 c++ c++类的使用 类的权限管理 对类的成员的访问做限制 private...

网友评论

      本文标题:C++使用major做变量名的问题

      本文链接:https://www.haomeiwen.com/subject/limqjxtx.html