所谓编译,就是把文本形式的源代码(*.c和*.cpp)翻译为机器语言形式的目标文件(一般为obj文件)。
所谓链接,就是把目标文件和用到的库文件组织成计算机可执行代码的过程。
从上面的叙述我们可以发现编译链接过程中都没有涉及到头文件,那么头文件在编辑链接时到底有没有用呢?答案是肯定的。
实际上程序在编译和链接之前还有一步工作,那就是预编译。
所谓预编译,就是对源程序中的伪指令(以#开头的指令)和特殊符号进行处理。伪指令主要包括四个方面:1.宏定义指令;2.条件编译指令;3.头文件包含指令;4.特殊符号。
简单而言,预编译程序就是对源程序的“替换”工作。经过此步骤后,生成一个没有宏定义、条件指令、特殊符号的输出文件,该文件的含义和没有预处理前的源文件是一样的,只是内容有所不同。编译过程就是对预处理后的输出文件进行翻译。