当前位置:网站首页>C陷阱与缺陷 第6章 预处理器
C陷阱与缺陷 第6章 预处理器
2022-07-30 17:10:00 【weixin_客子光阴】
预处理器
在严格意义上的编译过程开始之前,C语言预处理器首先对程序代码做了必要的转换处理。因此,
我们运行的程序实际上并不是我们所写的程序。
预处理器的重要性可以用两个主要的原因说明:
第一个原因:即需要将某个特定数量(例如,某个数据表的大小)在程序中出现的所有实例统统加以修改。我们希望能够通过在程序中只改动一处数值,然后重新编译就可以实现。预处理器要做到这一点可以说是轻而易举。我们只需要将这个数值定义为一个显式常量(manifest constant),然后在程序中需要的地方使用这个常量。而且,预处理器还能够很容易地把所有常量定义都集中在一起,这样可以轻松找到这些常量。
第二个原因:大多数C语言实现在函数调用是都会带来重大的系统开销。因此,我们也许希望有这样一种程序块,即它看上去像一个函数,但却没有函数调用的开销。
宏只是对程序的文本起作用。也就是说,宏提供了一种对组成C程序的字符进行变换的方式,而并不作用于程序中的对象。因而,宏既可以是一段看上去完全不合语法的代码称为一个有效的C程序,也能使一段看上去无害的代码成为一个可怕的怪物。
边栏推荐
猜你喜欢

Insert data into MySQL in C language

Is it reliable to work full-time in self-media?

实现web实时消息推送的7种方案

BCryptPasswordEncoder的使用及原理

swagger使用教程——快速使用swagger

You are a first-class loser, you become a first-class winner

论文阅读之《Color Constancy Using CNNs》

论文阅读之《Quasi-Unsupervised Color Constancy 》

Mongoose module

LeetCode167:有序数组两数之和
随机推荐
每日一题:两数之和
疫情之下的裁员浪潮,7点建议帮你斩获心仪offer
基于模糊PID的液压舵机伺服系统
2022-07-30 Androd 进入深度休眠后把WIFI给关掉,唤醒之后重新打开WIFI
新零售saas小程序如何探索数字化门店的破局之路?
中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030
Insert data into MySQL in C language
Win11如何把d盘空间分给c盘?Win11d盘分盘出来给c盘的方法
获得抖音商品详情 API
JMeter Notes 3 | JMeter Installation and Environment Instructions
Google earth engine如何实现我们时间列表的排列和选取
Express framework connects MySQL and ORM framework
数据库的三大范式
You are a first-class loser, you become a first-class winner
数据预处理:离散特征编码方法
Oracle动态监听与静态监听详解
Research on intelligent charging strategy of matlab simulink lithium-ion battery
优酷视频元素内容召回系统:多级多模态引擎探索
MySQL索引常见面试题(2022版)
Summary of String Copy, Concatenation, Comparison and Split Functions (1)