include .h的问题

dami1023 2011-08-19 02:08:20
现在有很多.h文件,比如a.h b.h c.h d.h
在a.h中#include b.h
在b.h中#include a.h
这样会不会有问题?
还有这么多.h文件,我在主函数中一次性include完会不会有问题,是不是都include了后面就不用include了?
...全文
128 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dami1023 2011-08-19
  • 打赏
  • 举报
回复
学习了,谢谢大家的解答,因为我分不是很多,不好意思了。
Jade0709 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dami1023 的回复:]
因为是移植别人的代码,作大量的改动工作量比较大。还有一个问题
如果你不想注意那么多,也可以用预处理命令解决可能重复的问题

#ifndef _INCLUDE_H
#define _INCLUDE_H
像这样的 后面部分用小写有没有问题,我看有的写成
#ifndef INCLUDE_H
#define INCLUDE_H
有什么区别?为什么可以去掉前面的_
[/Quote]
_INCLUDE_H是“宏”,一般来说是写成大写的,写成小写编译应该没问题,但极其不规范,不应该写成小写。
另外前面加_是为了防止与其他文件定义的宏重名,因为文件大了,可能其他的地方也定义了这个宏用于其他的用途,所以前面加_就可以防止命名冲突,现在h文件中这么定义应该被大多数人所接受。
dami1023 2011-08-19
  • 打赏
  • 举报
回复
因为是移植别人的代码,作大量的改动工作量比较大。还有一个问题
如果你不想注意那么多,也可以用预处理命令解决可能重复的问题

#ifndef _INCLUDE_H
#define _INCLUDE_H
像这样的 后面部分用小写有没有问题,我看有的写成
#ifndef INCLUDE_H
#define INCLUDE_H
有什么区别?为什么可以去掉前面的_
soliddream66 2011-08-19
  • 打赏
  • 举报
回复
最简单的还是把所有.h文件搞到一个.h文件里头,比如需要的声明都放到stdafx.h里。

最彻底的还是搞个关系图,这样一清二楚。
tianmo2010 2011-08-19
  • 打赏
  • 举报
回复
如果你不想注意那么多,也可以用预处理命令解决可能重复的问题

#ifndef _INCLUDE_H
#define _INCLUDE_H

...
#endif
tianmo2010 2011-08-19
  • 打赏
  • 举报
回复
简单一句话,你要再哪个函数中调用另一个头文件中包含的函数,你就要在该文件中加上哪个头文件。
jialejiahi 2011-08-19
  • 打赏
  • 举报
回复
include 文件里面要像这样写,解决重复包含的问题


#ifndef _INCLUDE_H
#define _INCLUDE_H
// some code
#endif
辰岡墨竹 2011-08-19
  • 打赏
  • 举报
回复
一般来说,都有#ifndef #endif这样的预处理指令保护,避免编译时重复包含的。
不,include只在当前的编译单元(一般是单个.c或.cpp文件)有效,如果其它的.c或.cpp要用到那些的话,还得include
tianmo2010 2011-08-19
  • 打赏
  • 举报
回复
比如你在主函数分别要调用a,b,c,d中的函数,则在主函数中#include "a.h" #include "b.h"
#include "c.h" #include "d.h"

如果你在主函数中调用a中的函数,而a中有调用b中的函数,而b中有调用c中的函数,而c中有调用d中的函数;
则在主函数中加上#include "a.h" 在a中加上#include "b.h" 在b中加上...依次的
tianmo2010 2011-08-19
  • 打赏
  • 举报
回复
这个看你程序程序的整个流程了,也就是是在那个程序中调用那个头文件里面的函数的问题。

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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