C++入门——内联函数

内联函数的由来

我们在C语言中,经常使用宏函数,例如:

 宏函数的特点是对宏直接进行替换,无需调用函数从而提高函数效率,但是,宏函数在C语言中经常会面临非常多的缺点

  1. 易写错,例如以上括号少一个都会出现问题
  2. 可读性差,比如更复杂的函数便无法进行宏替换

面对这些问题,在C++中出现了内联函数这一概念。内联函数的功能和宏函数相同,其在预处理时会在调用内敛函数的地方进行展开,没有调用函数而建立的栈帧,从而提高函数运行的效率

内联函数

 内联函数的使用

我们在定义内敛函数时,只需要在函数前加上关键字inline,便定义了一个内联函数

此时,我们在调用内联函数时便会直接进行替换

 未使用内联函数时,编译器会先调用函数地址(即为call),再调用函数返回值

使用内联函数时,编译器会直接替换掉内联函数的内容,从而大大提高了效率

内联函数的注意

 1.内联函数会导致内存膨胀

我们通过内联函数的替换特性,我们可以想象,假设一个内敛函数有8行,我们在程序中使用了一千次这一内联函数,相比于不使用内联函数的1008行,我们使用内联函数便使程序扩大了近7000行。而在程序中,这个数字只会越来越大,所以内联函数会导致程序的内存变大甚至膨胀。

2.内敛函数仅仅是对编译器的建议

通过内联函数产生膨胀,编译器会慎用内敛函数,所以我们就算定义了内联函数,程序仍会对该函数进行分析,如果该函数产生的内存过大,编译器会无视内存函数的定义,仍采取传统的调用函数

同时,递归函数编译器默认不使用内联展开

3.inline不建议声明和定义分离

inline不建议声明和定义分离,分离会导致链接错误。因为inline被展开,就没有函数地址了,链接就会找不到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值