C语言的编译过程

1.前言

C语言的编译过程其实就是一个翻译的过程,将我们可以理解的高级语言代码转换成为计算机可以理解的机器代码的过程。本章节主要描述的是C语言的编译有哪些过程。

2.编译过程的描述

以下整张图描述了C语言程序编译的完整过程,包括:预处理、编译、汇编和链接。

预编译

编译过程实现进行预处理,预处理后生成后缀为.i的临时文件,主要完成:

1)删除所有的注释。因为注释不属于程序代码,它们对程序的运行无任何作用。

2)宏展开,将所有的#define删除,并且展开所有的宏定义。

3)文件包含:将#include指令的包含文件,将对应文件的源码添加到文件中,从而替换掉#include指令。

编译:

编译阶段对预处理文件进行词法分析、语法分析和语义分析、源代码优化、底阿妈生成、目标代码优化。

1)分析关键字、标识符等是否合法。

2)分析表达式是否遵循语法规则。

3)语法分析的基础啥进一步分析表达式是否合法。

    分析结束后进行代码优化生成相应汇编代码。

汇编:

使用汇编程序将.s文件代码转换成机器可以理解的代码(机器代码)。汇编程序时也预先编写的程序,它家汇编代码转换成机器代码。这种机器代码可以在计算机上执行,每条汇编语句几乎都能对应一条机器指令。

链接:

链接是将库文件与汇编生成的目标文件合并生成可执行文件。

3.举例说明

创建工程如下所示。

设置输出汇编语言文件。

设置输出预处理文件.i文件

输出内容如下所示:

扩展源代码:main.i

汇编语言:main.asm

目标代码:main.obj

可执行文件:main.exe

注意:勾选了输出预处理文件之后,不能生成.obj文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小草xyz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值