zoukankan      html  css  js  c++  java
  • 谨防c++头文件安全保护宏重名

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

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

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

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

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

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

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

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

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

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

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

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

    OK,100%是这个原因。

  • 相关阅读:
    Httpclient的应用
    sql树形结构
    发送邮件
    关于多态的思考
    java集合整体结构
    应用--对HashMap进行排序(转为LinkedHashMap)
    初识POI操作Excel
    常用的开发工具
    [redis]Redis Transaction
    [ajax] quick double or multiple click ajax submit cause chrome explorer's error snatshot
  • 原文地址:https://www.cnblogs.com/dabaopku/p/2630926.html
Copyright © 2011-2022 走看看