当前位置:网站首页>C陷阱与缺陷 第6章 预处理器
C陷阱与缺陷 第6章 预处理器
2022-07-30 17:10:00 【weixin_客子光阴】
预处理器
在严格意义上的编译过程开始之前,C语言预处理器首先对程序代码做了必要的转换处理。因此,
我们运行的程序实际上并不是我们所写的程序。
预处理器的重要性可以用两个主要的原因说明:
第一个原因:即需要将某个特定数量(例如,某个数据表的大小)在程序中出现的所有实例统统加以修改。我们希望能够通过在程序中只改动一处数值,然后重新编译就可以实现。预处理器要做到这一点可以说是轻而易举。我们只需要将这个数值定义为一个显式常量(manifest constant),然后在程序中需要的地方使用这个常量。而且,预处理器还能够很容易地把所有常量定义都集中在一起,这样可以轻松找到这些常量。
第二个原因:大多数C语言实现在函数调用是都会带来重大的系统开销。因此,我们也许希望有这样一种程序块,即它看上去像一个函数,但却没有函数调用的开销。
宏只是对程序的文本起作用。也就是说,宏提供了一种对组成C程序的字符进行变换的方式,而并不作用于程序中的对象。因而,宏既可以是一段看上去完全不合语法的代码称为一个有效的C程序,也能使一段看上去无害的代码成为一个可怕的怪物。
边栏推荐
- mysql进制安装与mysql密码破解
- Chapter 5 Advanced SQL Processing
- What does a good resume look like in the eyes of a big factory interviewer?
- Security business revenue growth rate exceeds 70% 360 builds digital security leader
- 每日练习------生成13位条形, Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。
- 你是这样的volatile,出乎意料
- 牛客网刷题——运算符问题
- Mongoose模块
- PHP message feedback management system source code
- Gvim order record
猜你喜欢
浅谈在线编辑器中增量编译技术的应用
The first time I used debug query and found that this was empty, does it mean that the database has not been obtained yet?please help.
DLCM - 基于列表上下文信息的重排序模型
MySQL 8.0.29 解压版安装教程(亲测有效)
论文阅读之《Color Constancy Using CNNs》
Wanhua chemical fine chemical industry innovation product assembly
升级Win11后不喜欢怎么退回Win10系统?
哎,这要人老命的缓存一致问题啊
[Geek Challenge 2020] Roamphp1-Welcome
olap——入门ClickHouse
随机推荐
Chapter 5 Advanced SQL Processing
[MRCTF2020]Ezaudit
KDD 2020 | 深入浅出优势特征蒸馏在淘宝推荐中的应用
Valid bracketed strings [greedy exercise]
万华化学精细化工创新产品大会
数据库的三大范式
No qualifying bean of type问题解决
DLCM - 基于列表上下文信息的重排序模型
FP6606CMP5 CPC-16L USB类型-C和PD充电控制器 百盛电子代理商
Lotus explodes the block failed
中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030
Redis缓存穿透-热点缓存并发重建-缓存与数据库双写不一致-缓存雪崩
将 APACHE 日志解析到 SQL 数据库中
swagger使用教程——快速使用swagger
华为无线设备Mesh配置命令
说几个大厂分库分表的那点破事。
[NCTF2019]Fake XML cookbook-1|XXE漏洞|XXE信息介绍
真正懂经营管理的CIO具备哪些特质
阿里SIM-基于检索的用户行为兴趣CTR模型(Search-based user Interest Model(SIM))
数据库课程设计大作业大盘点【建议在校生收藏】