当前位置:网站首页>C陷阱与缺陷 第6章 预处理器
C陷阱与缺陷 第6章 预处理器
2022-07-30 17:10:00 【weixin_客子光阴】
预处理器
在严格意义上的编译过程开始之前,C语言预处理器首先对程序代码做了必要的转换处理。因此,
我们运行的程序实际上并不是我们所写的程序。
预处理器的重要性可以用两个主要的原因说明:
第一个原因:即需要将某个特定数量(例如,某个数据表的大小)在程序中出现的所有实例统统加以修改。我们希望能够通过在程序中只改动一处数值,然后重新编译就可以实现。预处理器要做到这一点可以说是轻而易举。我们只需要将这个数值定义为一个显式常量(manifest constant),然后在程序中需要的地方使用这个常量。而且,预处理器还能够很容易地把所有常量定义都集中在一起,这样可以轻松找到这些常量。
第二个原因:大多数C语言实现在函数调用是都会带来重大的系统开销。因此,我们也许希望有这样一种程序块,即它看上去像一个函数,但却没有函数调用的开销。
宏只是对程序的文本起作用。也就是说,宏提供了一种对组成C程序的字符进行变换的方式,而并不作用于程序中的对象。因而,宏既可以是一段看上去完全不合语法的代码称为一个有效的C程序,也能使一段看上去无害的代码成为一个可怕的怪物。
边栏推荐
猜你喜欢
随机推荐
Mysql进阶优化篇01——四万字详解数据库性能分析工具(深入、全面、详细,收藏备用)
华为无线设备Mesh配置命令
【AAAI2020】阿里DMR:融合Matching思想的深度排序模型
Lotus 1.16.0 minimum snapshot export import
线程同步 控制执行顺序
阿里巴巴中国站获得1688商品分类 API
牛客网刷题——运算符问题
实现web实时消息推送的7种方案
MySQL超详细安装教程 手把手教你安装MySQL到使用MySQL 最简单的MySQL安装方式,这种方式装,卸载也简单
论文阅读之《Underwater scene prior inspired deep underwater image and video Enhancement (UWCNN)》
新零售saas小程序如何探索数字化门店的破局之路?
Express框架连接MySQL及ORM框架
云厂商做生态需要“真连接、真赋能”,用“技术+真金实银”发展伙伴
Insert data into MySQL in C language
data storage
基于stm32的shell实现
数据库课程设计大作业大盘点【建议在校生收藏】
Error EPERM operation not permitted, mkdir 'Dsoftwarenodejsnode_cache_cacach Two solutions
查询表中开始日期与结束日期
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.









