宏和函数应该怎么选

今天我们来看一下利用宏定义编写类似函数调用的方法和真实的函数有什么区别。
一、宏和函数怎么选?首先来看一个例子:
#define n 2+2void main(){ int a = n * n; printf( a = %d, a);}这里,我们得理解宏的工作方式,它是在编译器编译代码之前做的一个纯文本的替换工作,因此,有时候简单宏替换的结果就会和我们预想的结果出现偏差。
比如上面的例子,我们预期 n 为 4,a=16,但实际结果却为 a=8;原因在于宏的作用方式是傻瓜式的文本替换。
在编译之前,编译器首先将宏定义的文本替换到程序体中,这个替换是完全无脑的一个操作,看一下替换结果就知道了。
#define n 2+2void main(){ int a = 2 + 2 * 2 + 2; printf( a = %d, a);}这也就是我们上一篇文章中讲到的,写宏函数的时候一定要注意括号的应用,多加括号一定是利大于弊的。

Mozilla Firefox 70.0 Beta在性能方面做出改进和引入了新图标
澳大利亚大规模的虚拟发电厂已部署持续发展
忍无可忍,希望医械生产企业购买检测仪器时擦亮眼睛
Pure Storage推出FlashArray系列全新高端型号,以无与伦比的简易性赋予企业强大性能和规模
iphone8什么时候上市?iphone8最新消息:iphone 8外观基本确认!与iphone7系列区别不止一点,首批供货不足,全靠抢?
宏和函数应该怎么选
Bourns微型断路器在医疗设备的技术应用
Microchip推可配置单片机CEC1736信任盾系列产品
常见的8种PCB标记你知道多少?
创新技术展 智能设计与用户体验成热点
罗永浩称年后回归科技界
WiFi6路由器将会成为新时代的标配?
了解激光切割机的加工精度误差
基本场效应管电路详解
二氧化碳CO2传感器模块SH-NDC在蘑菇棚中的应用原理解析
Micro LED检测设备的应用与前景
国星展示Mini LED在显示和背光领域最新成果
Intel和Linux技术带来分布式计算的高潮?
中性点接地电阻接地方式的分类
华为mate10什么时候上市?华为P10闪存门持续发酵!麒麟970+6GB+4900mA,华为mate10有望成为新一代机皇?