为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕慕森 2019-08-21 13:12:05
关于在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*/期待给出自己遇到的关于头文件循环引用的例子和解决方法,有理有据;之所以问题发出来希望帮助更多遇到类似问题的人,同时希望答案相对全面一些.
查看完整描述

2 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

循环引用得从设计上去规避。比如你的例子里根本原因是pan->sam->eve->dev的依赖,而pan和dev又放在同一个头文件里声明。解决办法很简单,就是把dev和pan的声明分离开来就是了。
比较常见的做法就是前置声明+指针。
毕竟c++里要实现
classA
{
Bb;
};
classB
{
Aa;
};
是不可能的……
                            
查看完整回答
反对 回复 2019-08-21
  • 2 回答
  • 0 关注
  • 356 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信