头文件互相包含

上两节讲的是头文件的重复包含,重复包含是:在主文件 main中 可能会包含多个自己写的头文件,这些个头文件中又变相的(间接的)包含了其他的头文件,导致某一个c.h 在纯纯的替换之后,在主文件上面出现了多次,结果造成了重复包含,从而导致重定义这种错误。

互相包含:

假如有一个c.h和d.h 两个头文件。c.h里面想用d.h里面的东西,d.h里面也想用c.h里面的东西(那么c.h中要#include"d.h",d.h中要#include"c.h")这就形成了一种互相包含。

这样的一种关系会产生什么副作用?!——————和之前的重复包含产生的问题就不太一样了!

变成了

发现e3.h包含了自己,既然是头文件,系统就要处理(复制替换)

继续替换

结果就是无限死循环。

所以头文件重复包含和头文件互相包含呈现的最终的问题是不一样的。

重复包含导致的结果就是重定义

互相包含导致的结果是一种死循环的状态,编译器直接就报错!

如何处理互相包含这种引发的问题?? ——————处理方法和处理重复包含时候的方法一样!

原文地址:https://www.cnblogs.com/dabing0983/p/10559038.html