include h 和include 。c的区别
2015-08-26 17:03
169 查看
首先引出问题:
keil编写c程序,有一些器件的使用,写成文件之后,再include进去,用起来比较方便。
写成头文件,再 include “xxxx.h”
和 写成源文件,再 include “xxxx.c”
调试了都可以,但我不知 这从 原理 上有什么区别?
问题解答:
(1)#include 指令
该指令指示编译器将xxx.xxx文件的全部内容插入此处,也就说 #include等效于复制、粘贴,
另外编译器会编译.c文件,不会编译.h文件
举例说明:
假设有a.c和b.c,b.c中include
a.c。实际相当于直接把a.c插入b.c中include的位置,编译的是b.c
假设有a.c,a.h和b.c,b.c中include a.h。一般.h写的都只是声明(函数声明,外部变量声明等)。
此时首先是将a.h插入b.c中include的位置。然后编译a.c,输出a.o,编译b.c,输出b.o。
编译时由于b.c中引入a.h,所以对于a中的函数或变量有声明,据此编译器认为此函数或变量在某个文件中是存在的,便不会报错。
最后再进行链接,输出目标文件。
假如是个大工程,都采用include c文件的方式,某个c文件修改过后,编译时需要全部重新编译。如果引入的是h文件,没做修改的部分便不需要再次编译。
keil编写c程序,有一些器件的使用,写成文件之后,再include进去,用起来比较方便。
写成头文件,再 include “xxxx.h”
和 写成源文件,再 include “xxxx.c”
调试了都可以,但我不知 这从 原理 上有什么区别?
问题解答:
(1)#include 指令
该指令指示编译器将xxx.xxx文件的全部内容插入此处,也就说 #include等效于复制、粘贴,
另外编译器会编译.c文件,不会编译.h文件
举例说明:
假设有a.c和b.c,b.c中include
a.c。实际相当于直接把a.c插入b.c中include的位置,编译的是b.c
假设有a.c,a.h和b.c,b.c中include a.h。一般.h写的都只是声明(函数声明,外部变量声明等)。
此时首先是将a.h插入b.c中include的位置。然后编译a.c,输出a.o,编译b.c,输出b.o。
编译时由于b.c中引入a.h,所以对于a中的函数或变量有声明,据此编译器认为此函数或变量在某个文件中是存在的,便不会报错。
最后再进行链接,输出目标文件。
假如是个大工程,都采用include c文件的方式,某个c文件修改过后,编译时需要全部重新编译。如果引入的是h文件,没做修改的部分便不需要再次编译。
相关文章推荐
- hdu2066-一个人的旅行
- cocos2dx编译android游戏中,我踩过的坑_2
- 关于flex绑定java 传回来的自定义List
- android 用java布局一个控件
- FragmentTabHost的使用
- http://blog.csdn.net/opennaive/article/details/7514146
- 直播地址
- cornerHarris函数
- PL/SQL 出现死锁解决办法
- MongoDB数据库安装及测试
- i2c内核驱动分析
- FZU 2150 Fire Game (DFS + BFS)
- 在线测试正则表达式工具 jQuery.Validate验证库
- 获取app和手机信息的一些方法
- U3D学习笔记(1)
- 独挡一面
- 4. jQuery 事件
- HEVC去方块滤波原理以及代码流程
- Badboy自动化测试工具 Incrementing Variables
- HDU 1054 Strategic Game (最小顶点覆盖)