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

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

#ifndef XXX
#define XXX
 
头文件内容
 
#endif

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

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

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

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

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

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

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

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

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

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

OK,100%是这个原因。

 

posted on   大宝pku  阅读(1961)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

导航

< 2012年8月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示