★从开始编写的源代码到最后出现的黑框上的运行结果,编译器到底做了什么呢?写了这么多的代码,那源代码是怎么样被编译器给执行的呢?下面让我们一起讨论一下吧!
这里我们先简单的了解一下程序的运行原理。大多数情况下,我们都会在Windows开发环境下进行开发,以C语言为例,它们会有这样的过程:
◆.c源文件——>预编译——>编译——>链接——>.exe可执行文件
①预编译
预编译又称为预处理,是做些代码文本的替换工作,主要就是为编译做的预备工作的阶段处理#开头的指令,比如拷贝#include包含的文件代码(例:#include<stdio.h>),#define宏定义的替换(例:#define PAI 3.14),条件编译(#ifdef、#else等指令)。
②编译
编译就是利用编译程序从各种语言编写的源代码产生目标程序的过程。它把高级语言设计变成计算机可以识别的二进制语言(1和0),编译程序把一个源代码翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码的生成;代码的优化;目标代码的生成。(这里的知识比较多,想了解很多的朋友,请戳——>编译)。最后在我们的项目文件夹下,就可以找到一个.obj的文件,这就是目标代码。
③链接
编译完成之后,代码还不能被执行起来,现在我们有的只是一堆二进制码。链接器将编译转成的各个目标代码捆绑在一起,形成一个单一而完整的可执行程序(.exe文件),就是链接的过程。经过链接过程,最后在debug文件夹中的.exe文件就是可执行文件。