被隐藏的过程
引言:
在学习编程之初,最简单的“hello world”,写起来也没啥感觉,就像一个机器人一样把老师写的照抄下来,运行一下,感觉还不赖。运行背后的原理却被我们所忽略掉了,在了解代码运行的原理之后,感叹前辈们的不容易和伟大。发明出高级语言这种神级操作。了解一下这隐藏的过程吧。
一串代码的运行需要经过4个步骤分别是:1.预编译,2.编译,3.汇编,4.链接
-
预编译
主要处理规则如下:
1.将所有的“#define" 删除,并且展开所有的宏定义。处理所有条件预编译指令,比如“#if”、 “ #ifdef"、“#elif"、 “#else",“#endif".2.处理“#include"预编译指令,将被包含的文件插入到该预编译指令的位置。注意,这个过程是递归进行的,也就是说被包含的文件可能还包含其他文件。
3.删除所有的注释“//"” 和“/* */”。
4.添加行号和文件名标识,比如#2“hello.c" 2,以便于编译时编译器产生调试用的行号信息及用于编译时产生编译错误或警告时能够显示行号。保留所有的#pragma编译器指令,因为编译器须要使用它们。
5.经过预编译后的i文件不包含任何宏定义,因为所有的宏已经被展开。
- 编译
编译过程就是把预处理完的文件进行一.系列词法分析、语法分析、语义分析及优化后生产相应的汇编代码文件,这个过程往往是我们所说的整个程序构建的核心部分,也是最复杂的部分之一。 - 汇编
汇编器是将汇编代码转变成机器可以执行的指令,每-一个汇编语句几乎都对应一条机器指令。 - 链接
这一步相当于,将汽车的发动机造好了,把轮胎找到链接到发动机上,才能跑。