C语言-程序环境和预处理

1.程序所经历的环境

一个程序的运行要经历两个环境,一是翻译环境,在这个环境中,源代码通过编译被转换为机器指令(二进制代码)进而通过链接生成.exe程序,二是执行环境,这个环境用于执行实际代码

2.翻译环境

大体流程如下图

一个程序有多个源文件,也就是.c文件,每一个源文件通过编译器转换为目标代码,生成目标文件,也就是.o文件,生成的多个目标文件通过链接器链接到一起,并且链接器还会搜索标准C函数库和程序员个人函数库,将需要的函数一并与目标文件链接起来,最后生成可执行程序,也就是.exe文件

2.1 编译

编译分为三个阶段,一是预编译,二是编译,三是汇编

预编译:程序进行与预处理相关指令,对.c文件处理,生成.i文件

在这个阶段中,程序会进行一系列文本操作,1、头文件的包含,你用来包含头文件的代码也就#include<>的一行,但实际上,程序运行时会把这个头文件所包含的代码通通替换进来 ,2、注释的删除,在程序运行时,所以的注释都会被删除,3、#define 定义的符号替换,所有被#define定义的符号都会被完全的替换

编译:程序将C语言代码转换为汇编代码,对.i文件处理生成.s文件

在这个阶段中,程序会进行四种操作,1.语法分析,2.词法分析,3.语义分析,4.符号汇总

汇编:将汇编代码转换为二进制代码,对.s文件处理生成.o文件

在这个阶段中,程序会形成符号表

2.2链接

在链接中,程序会进行两种操作,1.合并段表,2.符号表的合并和符号表的重定位

3.执行环境

程序的执行过程:

1.程序载入内存中

2.开始调用main函数,执行程序代码,程序使用运行时堆栈存储函数的局部变量和返回地址。

3.终止main函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值