第五十五章:预处理

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
test.i的内容都是来自/usr/include/stdio.h这个文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
汇编过程对test.s做处理。生成test.o(obj目标文件),里面内容是二进制指令(代码),汇编还形成了符号表
在这里插入图片描述
形成符号表
在这里插入图片描述
链接(两个过程,各个文件有自己的段,有自己的elf文件格式)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
预定义符号(获取程序运行信息)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
预编译阶段
预处理指令(#开头)
在这里插入图片描述
在这里插入图片描述
不要加封";"

在这里插入图片描述
定义宏(完全替换,而不是传参)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
翻译环境+执行环境
翻译环境:编译(源代码–>目标代码)+链接(多个目标代码‘’.o.obj文件‘’进行链接包括目标库最后生成可执行程序exe)
编译:预编译(文本操作)+编译(每个C语言代码‘’源文件‘’生成汇编代码‘’目标文件‘’)+汇编(汇编代码–二进制指令)
在这里插入图片描述
在这里插入图片描述
带有副作用的宏参数
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
函数在调用的时候会有调用和返回的开销(查汇编代码)

在这里插入图片描述
在这里插入图片描述
宏可以传类型
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
命令行定义也是预编译阶段(参考linux命令行参数)
在这里插入图片描述
在这里插入图片描述
选择性编译代码(预处理指令里有条件编译指令)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
stdio.h示例

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
防止多次包含
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
例题:宏替换求偏移量
把0–>0x0000赋值给s结构体首地址,然后根据结构体内存特点写了一个函数体求出了偏移量
在这里插入图片描述

在这里插入图片描述
位段打印

在这里插入图片描述
联合体

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值