C++多文件编译,如果两个头文件都需要包含另一个头文件,而这两个头文件又要被第四个文件包含,怎么办

就有点类似于钻石继承(菱形继承)比如有a.hb.hc.h和d.h四个头文件其中,b和c需要#include"a.h"而d需要#include"b.h"#include"c... 就有点类似于钻石继承(菱形继承) 比如有 a.h b.h c.h和d.h四个头文件 其中,b和c需要#include"a.h" 而d需要#include"b.h" #include"c.h" 这样编译的时候肯定会报错,因为d包含了两次a.h,请问各位技术大牛这个情况该如何解决 #ifndef #define ... #endif对此并不起作用 展开
 我来答
哦米噶滴3fe0
2012-12-09 · TA获得超过365个赞
知道小有建树答主
回答量:624
采纳率:66%
帮助的人:235万
展开全部
假如你现在有 a.h b.h c.h三个头文件,A B C三个程序都要调用
这时候你可以这样,比如A B C三个程序都要用到#include <string>那么他们的头文件里你可以这样写
#ifndef STRING_ABC_H
#define STRING_ABC_H
#include <string>
#endif
这样当编译器第一次编译string的时候就已经定义宏了。。下次遇到同样的宏就会跳过
boatliu
2012-12-09 · TA获得超过980个赞
知道小有建树答主
回答量:1025
采纳率:59%
帮助的人:327万
展开全部
#ifndef #define ... #endif
应该可以的啊,你头文件要用大写的。用A_H别用a.h
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水晶扇
推荐于2018-04-23 · TA获得超过1536个赞
知道大有可为答主
回答量:837
采纳率:100%
帮助的人:1105万
展开全部
#ifndef #define ... #endif对此肯定起作用的(只要定义得当)。
理论上,同一个头文件#include多次是没关系的,只要头文件符合标准并使用了#ifndef #define ... #endif进行控制。
所以你应该是还有别的问题。
如果可以的话,我需要看一下你的各个头文件,才能确定具体的问题所在。
你先要确保:
#ifndef #define ... #endif格式正确:
#ifndef _A_XXXX_H_ /* 这个名称只要不重复是无所谓的 */
#define _A_XXXX_H_ /* 要和上面的一样 */
...
#endif
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式