头文件包含产生的编译错误

今天遇到一个问题,编译时报错,说某个结构体没有定义,但是是实际上该结构体已经定义,经过反复查找,发现是因为头文件包含错误引起的。

具体情况如下:
(1).A.h头文件内容:
……
#include “B.h”
……
//使用结构体声明函数
……
(2).B.h头文件内容:
……
#include “C.h”
……
//定义该结构体
……
(3).C.h头文件内容
……
#include “A.h”
……
……
这样,编译时A.h调用B.h对结构体类型进行定义,但是B.h会先调用C.h,而C.h又会调用A.h,在执行A.h的内容时发现结构体类型还没有定义。

所以,头文件的内容和包含关系应该要引起注意,哪些内容应该放在哪个头文件中;头文件应该以怎样的关系进行包含都需要注意。

发表评论

电子邮件地址不会被公开。 必填项已用*标注