平时我们所说的编译主要包括预编译、编译、汇编三部分,下面分别简单介绍一下:
预编译:由源文件“.cpp/.c”生成“.i”文件
主要工作: a 展开所有的宏定义,消除“#define”;
b 删除所有的注释;
c 处理#include预编译指令,将包含文件插入到该预编译的位置;
d 处理所有的预编译指令,比如#if、#ifdef等
编译:由“.i”文件生成“.s”文件
主要工作:a 词法分析 -- 识别单词,确认词类;比如int i;知道int是一个类型,i是一个关键字以及 判断i的名字是否合法
b 代码生成 -- 生成译文;
c 语法分析 -- 识别短语和句型的语法属性;
d 语义分析 -- 确认单词、短语和句型的语义特征;
e 代码优化 -- 修辞、文本编辑;
汇编:由“.s”文件生成的“.obj”文件
链接:合并所有的目标文件