从代码变成可执行文件分为:预处理、编译、汇编、链接
1:预编译
预编译过程主要处理那些源代码文件中的以“#”开始的预编译指令,主要规则如下:
将所有#define删除,并且展开所有的宏定义
处理所有条件预编译指令,比如:#if #ifdef #elif #endif
处理#include预编译指令,将包含的文件所有内容插入到该预编译指令的位置,这个过程是递归进行的
删除所有的注释
添加行号和文件标识,以便于编译时编译器产生调试用的行号信息及用于编译时产生编译错误和告警时能够现实行号
保留所有的#pragma编译器指令,因为编译器需要使用它们
2:编译
编译过程就是把预处理完的文件进行一系列词法分析、语法分析、语义分析、及优化后产生相应的汇编代码文件
3:汇编
汇编器就是讲汇编代码变成机器可执行额指令,每个汇编语句几乎都对应一条机器指令
4:连接