宏与内联函数的优点与缺点

本文探讨了宏和内联函数在C与C++中的应用,强调了它们的效率与潜在问题。宏虽能提高执行效率,但存在边界问题和二义性;内联函数在保持函数特性的同时减少了调用开销,但过长的内联函数可能导致内存消耗过大。内联函数更安全,可以访问类的私有和保护成员,而宏仅作文本替换,不做类型检查。
摘要由CSDN通过智能技术生成

第一部分:宏

为什么要使用宏呢?

因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。

而宏只是在预处理的地方把代码展开,不需要额外的空间和时间方面的开销,所以调用一个宏比调用一个函数更有效率。

但是宏也有很多的不尽人意的地方。

在C语言中:

1、宏容易出现一些边界性的问题,产生二义性;

在C++中:

2、宏又不可以调用C++类中的私有或者受保护的成员;

我们举个例子:
#define square(x) (x*x)
我们用一个数字去调用它,square(5),这样看上去没有什么错误,结果返回25,是正确的,但是如果我们用squre (5+5)去调用的话&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值