C语言的编译连接

当我们将代码写到编译器上后,每次都是编译运行一下,来查看自己代码的结果。

而今天要说的就是编译这个环节,编译器到底替我们完成了什么样的一个操作。

我们经常口中说的编译可以分为这么四个阶段:预处理、编译、汇编和链接

首先来说预编译阶段:

               1、将所有的“#define”删除,并且展开所有的宏定义。

               2、处理所有的条件的预编译的命令,如“#if” “#ifdef” “#endif”。

               3、处理所有的头文件,如“#include<stdio.h>”

               4、删除所有的注释

               5、增加行号和文件标识

               6、保留所有的#pragma编译器指令

             经过预编译阶段后,会生成.i文件,并且生成的 .i文件不包括任何宏定义,以为已经将宏定义全部展开了。

编译阶段:

       这个阶段就是把预处理玩的文件进行一系列词法分析、语法分析、语义分析以及优化后产生的相应汇编代码文件,这个过程是往往是整个编译环节最重要的核心部分,这个阶段将.i文件生成为.asm文件。

汇编阶段:

   汇编阶段是将生成的.asm文件中的汇编语言转化成机器可以执行的指令

链接阶段:

              1、合并段和符号表

              2、进行符号解析

              3、分配所需的虚拟地址空间

              4、符号重定义

这就是编译器为我们所做的事情。

 

 

 

 

 

 

 

     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值