C/C++:预编译、编译、汇编、链接

一、编译预处理(处理#,.C/C++ ---> .i)     

1、进行代码文本的替换和拷贝工作,处理#开头的指令,生成预编译文件(.i文件):

       (1)展开宏(#define);(2)处理条件编译(#ifdef);(3)插入头文件(#include)。

2、其他操作:

       (1)删除注释;

       (2)添加行号和文件标识。比如:#2"hello.c"2,以便于编译时编译器产生调试用的行号信息及用于编译时产生编译错误或警告时能够显示行号。

       (3)保留"#pragma"。保留所有的编译器指令,留给编译器处理。

二、编译(查错,.i ---> .s)

        编译阶段主要进行错误检查和生成汇编命令,生成汇编文件(.s文件)主要会进行:

       (1)词法分析、语法分析、语义分析;

       (2)函数查错;

       (3)生成汇编指令;

       (4)代码优化;

       (5)生成符号

三、汇编(翻译,.s ---> .o)

       将编译过程形成的汇编指令翻译成为机器指令,将汇编文件(.s)翻译目标文件(.o);生成符号表以及各个段。

四、链接(.o ---> .exe)

       又称为找符号,链接出错的常见原因:(1)函数没写;(2)名字写错:(3)符号重定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值