内联函数

内联函数


1.定义

2.内联函数与其他函数的区别
3.使用规则 

4.使用范围

5.内联函数与宏的区别

6.内联函数的优缺点

 1.定义


以inline 修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开。它的优点是没有函数压栈的开销,
内联函数提升程序运行的效率。

2.内联函数与其他函数的区别

1)内联函数是直接复制“镶嵌”到主函数中去的,就是将内联函数的代码直接放在内联函数的位置上,这与一般函数不同,主函数在调用一般函数的时候,是指令跳转到被调用函数的入口地址,执行完被调用函数后,指令再跳转回主函数上继续执行后面的代码;而由于内联函数是将函数的代码直接放在了函数的位置上,所以没有指令跳转,指令按顺序执行

2)一般函数的代码段只有一份,放在内存中的某个位置上,当程序调用它是,指令就跳转过来;当下一次程序调用它是,指令又跳转过来;而内联函数是程序中调用几次内联函数,内联函数的代码就会复制几份放在对应的位置上

3.使用规则


 一般在使用内联函数时,必须将inline 关键字与定义的函数体写在一起才可以实现内联,如果只是在函数前面加上inlie关键字,是不能达到内联的效果。举个例子

4.使用范围

 1)inline是一种以空间换时间的做法,省去调用函数额开销。所以代码很长或者有循环/递归的函数不适宜使用作为内联函数。并且被反复调用时也不建议使用。

2)  inline对于编译器而言只是一个建议,编译器会自动优化,如果定义为inline的函数体内有循环/递归等
等,编译器优化时会忽略掉内联。
3) inline不建议声明和定义分离,分离会导致链接错误。因为inline被展开,就没有函数地址了,链接就会
找不到

5.关于内联函数与宏的区别

宏函数的优点就是在预处理阶段就会展开,少了函数调用的开销,(传参,参数压栈以及栈帧开销)

缺点:在预处理阶段(预处理-编译-汇编-链接)就发生替换,不会参与编译,少了类型检测。

举个例子

内联函数相对于宏函数的不同,就是它是在编译阶段发生替换,可以解决上例中的问题。

因此在c++中宏函数定义 换用内联函数。

6.内联函数的优缺点

 

优:避免了指令的来回跳转,加快程序执行速度

缺:代码被多次复制,增加了代码量,占用更多的内存空间

参考博客:https://blog.csdn.net/qq_33757398/article/details/81390151

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值