谨防c++头文件安全保护宏重名

在c++中,为了防止一个头文件在同一个文件中include两次,导致类对象重复声明(定义),我们可以使用如下结构进行保护

#ifndef XXX
#define XXX

头文件内容

#endif

这里的XXX就是一个随便定义的一个宏名,IDE一般是用头文件名的大写来自动生成。

当写的项目足够大了,又经历过一定程度的重构,就要小心了,这里的宏名不要重复了!!!

如果你看到了以下一些异常错误,就要考虑是不是出现了这些问题。

1.  错误:‘***’不是一个类型名

这个编译错误极少出现,就是因为重名的宏导致第二个类根本就没有被声明(定义)

2. 错误:对不完全的类型‘***’的非法使用

进行了类的前置声明,但是类的头文件没有加进来,因为被屏蔽掉了。

3. 警告:检测到调用 delete 运算符时可能出现的问题:附注:析构函数和类特定的 delete 运算符均不会被调用,即使它们在类定义时已经声明。

这更是千年难遇的警告,原因同上。

4. 交换两个头文件的顺序,导致编译结果不一致。

OK,100%是这个原因。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值