宏和函数的区别

宏通常被应用于执行简单的运算,比如在两个数中找出较大的一个。

#define MAX(a,b) ( ( a ) > ( b ) ? ( a ) : ( b ) )

那为什么不用函数来完成这个任务?
原因有二:
1.用于调用函数和从函数返回的代码可能比实际执行这个小型计算工作所需要的时间更多。所以宏比函数在程序的规模和速度方面更胜一筹。
2.更为重要的是函数的参数必须声明为特定的类型。所以函数只能在类型合适的表达式上使用。反之这个宏可以适用于整型,长整型,浮点型等可以用于>来比较的类型。宏是与类型无关的
和函数相比宏也有劣势:
1.每次使用宏的时候,一份宏定义的代码将插入到程序中。除非宏比较短,否则可能大幅度增加程序的长度。
2.宏是没法调试的。
3.宏由于与类型无关,也就不够严谨。
4.宏可能会带来运算符优先级的问题,导致程序容易出错。
宏有时候可以做到函数做不到的事情。比如:宏的参数可以出现类型,但是函数做不到。
命名约定:宏名需要全部大写, 函数名不要全部大写

宏和函数的一个对比

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值