编译程序的过程分为预处理、编译汇编和链接三个阶段。
预处理阶段把源文件中的预处理命令替换成C语言语句。
编译汇编阶段把每个源文件都翻译成由机器指令组成的目标文件。编译汇编阶段可以检查出源文件中的语法错误。
链接阶段把编译汇编阶段产生的属于同一个工程的所有的目标文件合并成一个可执行文件。链接阶段的主要任务是处理具有全局作用域的标识符在多个文件中的使用问题。
预处理阶段的操作多是简单的文本替换。常用的预处理命令有宏定义、文件包含和条件编译。使用预处理命令可以提高编程效率。
宏定义命令只是“查找替换”操作,但要定义一个完全没有副作用的宏却并非易事。
文件包含命令只是“文件级别”的查找替换,但需特别注意同一个文件在程序中被多次包含的问题。
条件编译命令只是“有条件”的查找替换,既可用于解决头文件被多次包含的问题,又可用于开发可移植的代码。