C++编译过程分为四个阶段

1. 预处理

第一,据编译器支持的字符集,翻译源码。编译器把源代码中出现的字符映射到源字符集。该过程处理多字节字符和三字符序列。

第二,编译器定位每个反斜杠后面跟着换行符的实例,并删除它们。把多个物理行转换成一个逻辑行。

第三,编译器把文本划分成预处理记号序列、空白序列和注释序列(记号是由空格、制表符或换行符分隔的项)。这里要注意的是,编译器将用一个空格字符替换每一条注释。

第四,明示常量。把#define定义的宏展开。

第五,包含文件,比如预处理器会把包含进来的头文件展开

第六,处理其他预处理指令,如#undef、#ifdef等

输入

输出

*.c

*.i

2. 编译

编译器会检查语法、语义错误,并生成汇编代码。语法错误编译器能检测,

输入

输出

*.i

*.s

3. 汇编

汇编器将汇编语言代码转换为机器代码,并生成目标文件。目标文件包含二进制形式的机器代码,但尚未链接到最终的可执行文件。

输入

输出

*.s

*.o

4. 链接

链接器将一个或多个目标文件、库文件(如标准库、动态库等)和启动文件合并为一个可执行文件。链接器的主要任务包括解析符号引用、分配内存地址、合并数据段和代码段等。

输入

输出

*.o

可执行文件,如:*.exe(win)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值