在头文件中写函数规范吗?加载头文件的实质是什么?如何避免重复引用?

看到有的人在.h文件里直接写函数,然后直接引用这个头文件。还有一种写法是在头文件里只写函数的声明,然后有一个.c的文件文件与这个.h的文件来对应。就是一个.h配一个.c这... 看到有的人在.h文件里直接写函数,然后直接引用这个头文件。
还有一种写法是在头文件里只写函数的声明,然后有一个.c的文件文件与这个.h的文件来对应。就是一个.h配一个.c
这两种写法有什么区别?哪一个好一点?

还有,加载头文件的实质是把#include所在的地方替换成头文件的全部内容吗?就是说把#include看成一个占位符?

另外,当头文件比较多的时候,容易发生重复引用的问题,如何有效避免呢?
展开
 我来答
roadsterwb
2013-09-06 · TA获得超过104个赞
知道小有建树答主
回答量:102
采纳率:50%
帮助的人:90.6万
展开全部

我反过来回答吧。

  1. #include就是把头文件的内容搬过来。编译器是只编译C文件的,它不会单独编译头文件,头文件只是被包含的。如果一个头文件没有被任何C文件包含,则该头文件中的内容不会被编译到。

  2. 如果程序规模不大,函数写在头文件里也行,但有些项目非常大,几百万行代码,上万个文件,如果一个头文件同时被好几千个C文件包含,这时如果该头文件里有很多函数的实现,那么这些函数将被重复编译好几千遍。有些大型开源项目(例如OpenOffice),完全编译一次要花十几个小时,时间就是这么浪费的。

不见彩虹多年
2013-09-06 · 超过11用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:29.2万
展开全部
1、一般会是在.c里面写函数的实现。如果该函数除了在对应.c中使用还在其他.c中使用,则将函数声明放在对应.h中,其他.c文件只要包含该.h文件即可。同时该不能定义成static。
2、可以在头文件里使用
#ifndef _A_H_
#define _A_H_
......
#endif//.h文件结尾处
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式