background image

C 语言中.h 和.c 文件解析
  简单的说其实要理解 C 文件与头文件(即.h)有什么不同之处,首先需要弄明白编
译器的工作过程,一般说来编译器会做以下几个过程:

  1.预处理阶段

  2.词法与语法分析阶段

  3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟 CPU 相关的二进制码,生成

 

各个目标文件 (.obj 文件)

  4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相
关的可执行文件,当然,最后还可以用 objcopy 生成纯二进制码,也就是去掉了文件格式
信息。(生成.exe 文件)

  编译器在编译时是以 C 文件为单位进行的,也就是说如果你的项目中一个 C 文件都
没有,那么你的项目将无法编译,连接器是以目标文件为单位,它将一个或多个目标文
件进行函数与变量的重定位,生成最终的可执行文件,在 PC 上的程序开发,一般都有一
个 main 函数,这是各个编译器的约定,当然,你如果自己写连接器脚本的话,可以不用
main 函数作为程序入口!!!!

  (main .c

 

 

文件 目标文件 可执行文件)

  有了这些基础知识,再言归正传,为了生成一个最终的可执行文件,就需要一些目
标文件,也就是需要 C 文件,而这些 C 文件中又需要一个 main 函数作为可执行程序的入
口,那么我们就从一个 C 文件入手,假定这个 C 文件内容如下:

  #include <stdio.h>

  #include "mytest.h"

  int main(int argc,char **argv)

  {

  test = 25;

  printf("test.................%d\n",test);

  }

  头文件内容如下:

  int test;