关于头文件的包含问题

xtwpxnn 2012-09-26 10:00:55
我定义了2个头文件,分别叫做v3516.h 和 mangager.h ,在两个头文件里面实现了2个类和一些操作,分别是class v3516
class mangager,在这两个类文件里面还定义和实现了一些接口。
下面是我对这两个头文件的使用:我在v3516.h里面包含了 mangager.h,在mangager.h里面也包含了 v3516.h 。编译没有问题,顺利通过。 然后我再main函数里面 加了mangager.h 就出现若干个错误了。去掉就好了。
不知道是什么原因,难道是一个 头文件不能被2次包含吗???????????????、、、
...全文
122 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xtwpxnn 2012-09-26
  • 打赏
  • 举报
回复
各位解释非常到位,谢谢了
shen_wei 2012-09-26
  • 打赏
  • 举报
回复
头文件不能循环包含。。
zzhays 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

第一个盒子里面装着第二个盒子,第二个盒子里面装着第一个盒子
请问,这两个盒子能不能实际出现在这世界上?

头文件互相include是绝对错误的事情
之所以一开始没错误,是因为头文件只是“声明”,在被c/cpp源文件include之前,它们不参与编译,哪怕你include一大堆不存在的文件也没关系
一旦被源文件include,此时头文件实际生效,编译器立刻发现头文件互相include并报……
[/Quote]
纠正下
”哪怕你include一大堆不存在的文件也没关系“这个编译是无法通过的;
盒子例子解释了楼主的疑惑
baichi4141 2012-09-26
  • 打赏
  • 举报
回复
第一个盒子里面装着第二个盒子,第二个盒子里面装着第一个盒子
请问,这两个盒子能不能实际出现在这世界上?

头文件互相include是绝对错误的事情
之所以一开始没错误,是因为头文件只是“声明”,在被c/cpp源文件include之前,它们不参与编译,哪怕你include一大堆不存在的文件也没关系
一旦被源文件include,此时头文件实际生效,编译器立刻发现头文件互相include并报错

alan1985 2012-09-26
  • 打赏
  • 举报
回复
1. 头文件里最好不要有实现
2. 在头文件里加上

#ifndef V3516_H
#define V3516_H

/*定义的类,函数,变量等 */

#endif
mymtom 2012-09-26
  • 打赏
  • 举报
回复
我在v3516.h里面包含了 mangager.h,在mangager.h里面也包含了 v3516.h 。

==

循环包含会由问题的啊!
xtwpxnn 2012-09-26
  • 打赏
  • 举报
回复
但是我确实要用到 v3516里面的接口函数啊?
farmliver 2012-09-26
  • 打赏
  • 举报
回复
头文件是不能被多次包含的,头文件一般要加预编译指令 #ifndef,#define,#endif以防止头文件被多次包含。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧