猿问

在线等!C #include 循环引用问题, 头文件循环引用求大佬指点!

关于在C中出现的循环引用问题,目的希望学习到如何规避头文件循环引用出现的这类错误.
大概逻辑描述
main.c:是程序入口,a.h,b.h,c.h为头文件;其中a.h中includec.h;c.hincludeb.h;b.hincludea.h
运行程序报错,
相关代码
main.c
#include
#include"a.h"
intmain(intargc,constchar*argv[]){
printf("Hello!\n");
return0;
}
a.h
#ifndefa_h
#definea_h
#include"c.h"
structsem
{
structeve*evet;
};
#endif/*a_h*/
b.h
#ifndefb_h
#defineb_h
#include"a.h"
structpan
{
structsemsemt;
};
structdev
{
intx;
};
#endif/*b_h*/
c.h
#ifndefc_h
#definec_h
#include"b.h"
structeve
{
structdev*devt;
};
#endif/*c_h*/
期待给出自己遇到的关于头文件循环引用的例子和解决方法,有理有据;之所以问题发出来希望帮助更多遇到类似问题的人,同时希望答案相对全面一些.
慕慕森
浏览 357回答 2
2回答

Smart猫小萌

循环引用得从设计上去规避。比如你的例子里根本原因是pan->sam->eve->dev的依赖,而pan和dev又放在同一个头文件里声明。解决办法很简单,就是把dev和pan的声明分离开来就是了。比较常见的做法就是前置声明+指针。毕竟c++里要实现classA{Bb;};classB{Aa;};是不可能的……
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答