搬砖:C++的内联函数和宏函数有什么区别?效率上谁更快?

107 篇文章 1 订阅

https://bbs.csdn.net/topics/392259133

 


内联函数和宏很类似,而区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。你可以象调用函数一样来调用内联函数,而不必担心会产生于处理宏的一些问题。
当然,内联函数也有一定的局限性。就是函数中的执行代码不能太多了,如果,内联函数的函数体过大,一般的编译器会放弃内联方式,而采用普通的方式调用函数。这样,内联函数就和普通函数执行效率一样了。

内联函数有没有在哪些方面是宏替代不了的?宏函数又有什么优势?


函数是强类型,宏只是单纯的替换操作,没有强类型限制,对于排错有一定的困难,而且展开的代码如果不是输出来会造成逻辑判断的困难程度(相对较复杂的)
宏是预编译的东西,如果你要控制预编译条件,那只能用宏。内联函数是编译时期,所以对预编译的控制是无能为力的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值