关于C++中头文件循环包含的问题

关于C++中头文件循环包含的问题,第1张

互相嵌套的情况

在告宽每个h文件中

比如 a.h中 有A类 使用B类

b.h中有B类 使用A类。

那么 在b.h的最上面 声明A类。

class A

就这一句。

在a.h中,最上面同样加

class B

这样就不会报错了。

不过 最好局搏设计成不互袜腊亮相包含的情况。

有些头文件重复包含只是增加了编译工作的工作量,不会引起太大的问题,仅仅是编译效率低一些

有些头文件重复包含,会引起错误,比如在头文件中定义了全局变量(虽然这种方式不被推荐,但薯并确实是C规范允许的)

如果头文件被循环包含的话,那就看你的编译器了

有的会智能处理,和只include一次一样

有的会报错

有的干脆死锁,导致编译弊隐程序崩溃(这个 只有很低级的编译器才会出 现在几乎看不到租手厅了)

不管怎样,用ifnde xxx #define xxx或者其他方式避免头文件重复包含,只有好处 没有坏处

是一个很好的习惯

用前置声灶迟樱明

// A.h

class B

class A

{

protected:

    B* b

}

// A.cpp

#include "A.h"

#include "B.h"

// B.h

class A

class B

{

protected:

    A* a

}

//B.cpp

#include "B.h"

#include "隐丛A.h"

前置声明好处可以解决循环包含头文件

需要注意的是因为是前置声明,所以不能声明相应的对象,只能旦岩声明指针或引用


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12281943.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存