电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

C语言中.h和.c文件解析

C语言中.h和.c文件解析_第1页
1/17
C语言中.h和.c文件解析_第2页
2/17
C语言中.h和.c文件解析_第3页
3/17
C 语言中.h 和 .c 文件解析20468104728 2010-1-9 15:32:30 收藏 | 打印 | 投票(1) | 评论(0) | 阅读(156) ◇字体: [大 中 小] ---By xiaoxiaopig 收集 简单的说其实要理解C 文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU 相关的二进制码,生成各个目标文件 (.obj 文件) 4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy 生成纯二进制码,也就是去掉了文件格式信息。(生成 .exe 文件) 编译器在编译时是以C 文件为单位进行的,也就是说如果你的项目中一个C 文件都没有,那么你的项目将无法编译,连接器是以目标文件为单位,它将一个或多个目标文件进行函数与变量的重定位,生成最终的可执行文件,在PC 上的程序开发,一般都有一个main 函数,这是各个编译器的约定,当然,你如果自己写连接器脚本的话,可以不用main 函数作为程序入口! !!! ( main .c 文件 目标文件 可执行文件 ) 有了这些基础知识,再言归正传,为了生成一个最终的可执行文件,就需要一些目标文件,也就是需要C 文件,而这些C 文件中又需要一个main 函数作为可执行程序的入口,那么我们就从一个C 文件入手,假定这个C 文件内容如下: #include #include "mytest.h" int main(int argc,char **argv) { test = 25; printf("test.................%d\n",test); } 头文件内容如下: int test; 现在以这个例子来讲解编译器的工作: 1.预处理阶段:编译器以C 文件作为一 个单元,首先读这个C 文件,发现第一句与第二句是包含一个头文件,就会在所有搜索路径中寻找这两个文件,找到之后,就会将相应头文件中再去处理宏,变量, 函数声明,嵌套的头文件包含等,检测依赖关系,进行宏替换,看是否有重复定义与声明的情况发生,最后将那些文件中所有的东东全部扫描进这个当前的C 文件 中,形成一个中间“C 文件” 2.编译阶段,在上一步中相当于将那个头文件中的test 变量扫描进了一个中 间 C 文件,那么 test变量就变成了这个文件中的一个全局变量,此时就将所有这个中间C文件的所有变量,函数分配空间,将各个函数编译成二进制码,按照特 定目标文件格式生成目标...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

C语言中.h和.c文件解析

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部