为啥这个c语言运行步骤不了

C的任何一种实现中存在着两种鈈同的环境。第一种是翻译环境在这个环境里,源代码被转换为可执行的机器指令第二种是执行环境,它用于实际执行代码

翻译阶段由几个步骤组成,组成一个程序的每个(有可能有多个)源文件通过编译过程分别转换为目标代码(object code)然后各个目标文件由链接器(linker)捆绑在一起,形成一个单一而完整的可执行程序链接器同时也会引入标准C函数库中任何被改程序所用到的函数,而且它也可以搜索程序员个人的函數库将其中需要使用的函数也链接到程序中。如下图所示

1.1 编译过程本身也由几个阶段组成

首先是预处理器处理:预处理器在源代码上執行一些文本操作。例如用实际值代替由#define指令定义的符号以及读入由#include指令包含的文件的内容。

然后源代码经过解析(parse),判断它的语句的意思该阶段是产生绝大多数的错误和警告信息的地方。随后便产生目标代码。目标代码是机器指令的初步形式用于实现程序的语句。

程序的执行过程也需要经历几个阶段

首先,程序必须载入内存这个任务由操作系统完成。那些不是存储在堆栈中的尚未初始化的变量将在这个时候得到初始值

然后,程序执行开始在绝大多数机器里,程序将使用一个运行时堆栈(stack)它用于存储函数的局部变量和返回哋址。程序同时也可以使用静态(static)内存存储于静态内存中的变量在程序的整个执行过程中将一直保留他们的值。

我要回帖

更多关于 c语言运行步骤 的文章

 

随机推荐