如何正确编写C语言头文件和与之相关联的C源程序文件,这
首先就要了解它们的各自功能。 要理解C文件与头文件(即.h )有什么
不同之处,首先需要弄明白编译器的工作过程。
一般说来编译器会做以下几个过程:
1.预处理阶段
2. 编译阶段,首先编译成纯汇编语句,再将之汇编成跟 CPU 相关的二进
制码,生成各个目标文件 (.obj 文件)
3. 连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特
定平台相关的可执行文件。
编译器在编译时是以 C 文件为单位进行的,也就是说如果你的项目
中一个 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);
}
头文件"mytest.h"包含如下内容:
int test;
现在以这个例子来讲解编译器的工作:
1.预处理阶段:编译器以 C 文件作为一个
首先就要了解它们的各自功能。 要理解C文件与头文件(即.h )有什么
不同之处,首先需要弄明白编译器的工作过程。
一般说来编译器会做以下几个过程:
1.预处理阶段
2. 编译阶段,首先编译成纯汇编语句,再将之汇编成跟 CPU 相关的二进
制码,生成各个目标文件 (.obj 文件)
3. 连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特
定平台相关的可执行文件。
编译器在编译时是以 C 文件为单位进行的,也就是说如果你的项目
中一个 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);
}
头文件"mytest.h"包含如下内容:
int test;
现在以这个例子来讲解编译器的工作:
1.预处理阶段:编译器以 C 文件作为一个