当前位置:网站首页>C陷阱与缺陷 第6章 预处理器
C陷阱与缺陷 第6章 预处理器
2022-07-30 17:10:00 【weixin_客子光阴】
预处理器
在严格意义上的编译过程开始之前,C语言预处理器首先对程序代码做了必要的转换处理。因此,
我们运行的程序实际上并不是我们所写的程序。
预处理器的重要性可以用两个主要的原因说明:
第一个原因:即需要将某个特定数量(例如,某个数据表的大小)在程序中出现的所有实例统统加以修改。我们希望能够通过在程序中只改动一处数值,然后重新编译就可以实现。预处理器要做到这一点可以说是轻而易举。我们只需要将这个数值定义为一个显式常量(manifest constant),然后在程序中需要的地方使用这个常量。而且,预处理器还能够很容易地把所有常量定义都集中在一起,这样可以轻松找到这些常量。
第二个原因:大多数C语言实现在函数调用是都会带来重大的系统开销。因此,我们也许希望有这样一种程序块,即它看上去像一个函数,但却没有函数调用的开销。
宏只是对程序的文本起作用。也就是说,宏提供了一种对组成C程序的字符进行变换的方式,而并不作用于程序中的对象。因而,宏既可以是一段看上去完全不合语法的代码称为一个有效的C程序,也能使一段看上去无害的代码成为一个可怕的怪物。
边栏推荐
- 你是这样的volatile,出乎意料
- Paper reading (63): Get To The Point: Summarization with Pointer-Generator Networks
- Tensorflow中实现正则化
- FP6600QSO SOP-8 USB专用充电端口控制器 用于快充电协议和QC2.0/3.0
- bean的生命周期
- C语言向MySQL插入数据
- MySQL详细学习教程(建议收藏)
- 向量检索基础方法总结
- Error EPERM operation not permitted, mkdir ‘Dsoftwarenodejsnode_cache_cacach两种解决办法
- C# 连接SQL Sever 数据库与数据查询实例 数据仓库
猜你喜欢
随机推荐
【云商店公告】关于7月30日帮助中心更新通知
数据预处理:离散特征编码方法
Navisworks切换语言
基于模糊PID的液压舵机伺服系统
How Google earth engine realizes the arrangement and selection of our time list
新零售saas小程序如何探索数字化门店的破局之路?
从零开始的Multi-armed Bandit
[Geek Challenge 2020] Roamphp1-Welcome
线程同步 控制执行顺序
onenote使用
图注意力机制
KDD 2020 | 深入浅出优势特征蒸馏在淘宝推荐中的应用
Oracle动态监听与静态监听详解
2022-07-30 Androd 进入深度休眠后把WIFI给关掉,唤醒之后重新打开WIFI
SYSCALL SWAPGS
全球架构师峰会
《痞子衡嵌入式半月刊》 第 59 期
Express框架连接MySQL及ORM框架
C语言向MySQL插入数据
(17)[系统调用]追踪系统调用(0环)









