【c语言】详解C语言预处理、编译、链接

目录

一、前言:编译器都替我做了哪些工作?

1.1 test.c   ~>  test.exe经历的步骤

1.1.1预处理

1.1.2编译

1.1.3汇编

1.1.4链接

二、正题:预处理详杂知识点

2.1#define

2.2.1#define定义标识符

2.2.2#define 定义宏

2.2.3 #define 替换规则

2.2.4趣味一题

2.3#undef

2.4条件编译

2.5文件包含

2.5.1嵌套文件包含


一、前言:编译器都替我做了哪些工作?

对于c语言的初学者来说,一上来就会对#include、 #define 这些预处理指令表示摸不着头脑,询问老师,老师便会回答 :你先不用懂,这个问题先放着吧!.......

那么今天终于到了要揭秘的时刻了!完结撒花!

1.1 test.c   ~>  test.exe经历的步骤

如图所示

编译器主要在翻译环境中帮我们完成了三个步骤:预处理编译汇编

下面我们逐一讲讲 每一步具体都干了什么

1.1.1预处理

1.首先注释被替换成空格(注释被删除)

2.对头文件的包含#include进行处理 将包含的内容加入进源代码里

3.# define 重定义符号的替换

总的来说是对文本进行处理,到这一步代码还能看懂

1.1.2编译

这一步主要是把C 语言代码翻译成汇编代码

并对其进行词法分析、语法分析、语义分析、符号汇总

1.1.3汇编

将汇编代码翻译为二进制指令

生成以.o结尾的目标文件

同时生成符号表

1.1.4链接

链接目标文件和链接库生成可执行的二进制程序

合并段表

符号表的合并和重定位

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值