关于单片机 模块化编程的 问题

如果只有源文件m.c没有m.h头文件我在另一个源文件中直接用extern包含m.c中用到的函数,这样可以吗?如果可以的话为什么我们还要做头文件.h呢。直接全是源文件不就可... 如果只有源文件m.c 没有m.h头文件 我在另一个源文件中直接用extern包含m.c中用到的函数 ,这样可以吗?
如果可以的话 为什么我们还要做头文件.h呢 。直接全是源文件不就可以了吗
展开
 我来答
chinalee1990
2013-05-25
知道答主
回答量:27
采纳率:0%
帮助的人:15.7万
展开全部
可以,但是加了头文件有几点好处:首先模块化更清晰;通过头文件申明需要对外提供调用的函数,比你在其他C文件里面用extern 申明要方便。举个例子,现在有main.c,a.c,b.c三个C文件,当你在main.c需要用到的a.c里的函数,且函数很多,好几十个,你需要在main.c写好几十个extern申明的函数语句。如果你还需要在b.c调用的话,还要在b.c里面写几十个申明语句。当你还需要在其他C文件里面调用的话,那工作量就太大了。如果我们写个h文件,然后在里面去extern申明需要对外提供的函数,其他C文件里面调用只需要写个#include "a.h"即可,方便且快捷。
高敏真人真话
2013-05-25 · TA获得超过814个赞
知道小有建树答主
回答量:465
采纳率:66%
帮助的人:182万
展开全部
1.头文件可以预先告诉编译器一些必要的声明,让编译器顺利进行下去,在连接实现以前.未必出现实际的定义.
头文件的意义在
2.使得程序简明,清晰.
3.避免了重复编写相同的声明代码.
4.**.c和**.h文件没有必然的联系.
其实要理解C文件与头文件有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:
1.预处理阶段 (处理C中包含的H)
2.词法与语法分析阶段 (判断声明,压栈,分配,预留空间)
3.编译阶段(不同的.c生成不同的.obj),首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件
4.连接阶段(l链接不同的.obi,生成目标代码,比如.hex .exe),将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制
码,也就是去掉了文件格式信息。.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式