.h为头文件,.c/.cpp为源文件
首先:
.h中一般放的是同名.c文件中定义的变量、数组、函数的声明,需要让.c外部使用的声明,一般只有声名,而具体的实现放在源文件中。
要将a.cpp和a.h对应起来,就必须在a.cpp中写上#include"a.h",这样编译器才会把a.h和a.cpp两个文件绑定在一起。
其次:
要了解细节的东西,我们先要清楚译器的工作过程,一般说来编译器会做以下几个过程:
1.预处理阶段
2.词法与语法分析阶段
3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件)
4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息(生成.exe文件)
其中 “预处理阶段”:#include预处理就是完成了一个“复制并插入代码”的工作(因为 #include "xx.h" 这个宏其实际意思就是把当前这一行删掉,把 xx.h 中的内容原封不动的插入在当前行的位置。)
eg. 会将headfile.h的全部内容复制到#include “headfile.h”处,
因为在c语言中,需要先声名才能使用,使用#include头文件,等于是把所有的声名都写了出来,这也是#include为什么放在开头的原因。