c语言的编译过程

原博文https://www.cnblogs.com/wuyouxiaocai/p/5701088.html#commentform)

总述

在这里插入图片描述
将C语言的编译过程分为三步:

  1. 预编译
  2. 编译
  3. 汇编
  4. 链接

具体讲解

1,预编译

预处理过程的实质上时处理"#",将#include包含的问价直接拷贝到.cpp(.c)文件中;将#define定义的宏进行替换,同时将代码中没用的注释部分删除等
具体做的事儿如下:
(1)将所有的#define删除,并且展开所有的宏定义。说白了就是字符替换
(2)处理所有的条件编译指令,#ifdef #ifndef #endif等,就是带#的那些
(3)处理#include,将#include指向的文件插入到该行处
(4)删除所有注释
(5)添加行号和文件标示,这样的在调试和编译出错的时候才知道是是哪个文件的哪一行
(6)保留#pragma编译器指令,因为编译器需要使用它们。

2, 编译

编译的过程实质上是把高级语言翻译成机器语言的过程,即对a.c做了这些事儿
(1)词法分析,
(2)语法分析
(3)语义分析
(4)优化后生成相应的汇编代码

3,汇编

汇编过程实际上指把汇编语言代码翻译成目标机器指令的过程

4,链接

汇编生成的目标机器指令是二进制,此时还不能直接执行,这个时候需要一个动作,将二进制与需要用到的库绑定在一起。举个例子,你想吃冰淇凌,生成二进制相当于你产生了吃冰淇凌的想法,而链接就相当于你从冰箱里拿到了一个冰淇凌。经过链接之后,系统可以生成可执行程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值