C++:内联函数的优缺点

内联函数:
首先我们阐述一下函数:先从汇编语言的角度看函数的调用,其实就是call和ret的搭配实现了一个函数调用,用下面代码来解释:

assume cs:code

code segment

s:
nop
...
ret

main:

call s
mov ax,ex
mov ax,4c00h
int 21
			
code ends

end main

这个汇编代码,其实上就能很简单的阐述函数的调用,首先从入口start进入执行,遇到call s,然后我们将 mov ax,ex 这条指令的地址压入栈中,然后相对转跳到 s标号这里,然后开始执行s标号下的内容,当执行完ret后,ret指令会将栈里的数据 pop ip上,此时我们的cs:ip又指向了mov ax,ex这条指令,完成了函数的调用。
由这个过程我们可以看出,函数的调用执行了地址的转跳,这个转跳会浪费一些时间,这也是和内联函数的不同的地方,当然这个过程节省了空间,因为通过地址转跳,我们不用再重新写一遍这个指令,当然就不用开新的空间,这里画应该划重点

接下来我们阐述一下内联函数:内联函数和函数的不同,在外表上多了个关键字,inline,但是因为这个inline,我们的内联函数就不要执行转跳了,但是会浪费些空间,因为内联函数相当于将函数里的语句插入到要执行的主程序中,这样,主程序就要为这些语句申请一些内存来存储,耗费了空间,但增加了执行效率,但是这个内联函数应该尽量的短,不能出现循环语句,或者switch等,也不能执行递归,适用于一般短小的代码。

总结:内联函数和函数的区别
优点:内联函数比函数更节省时间,能提高程序的执行效率。
缺点:内联函数不能执行递归操作,而且浪费额外的内存。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值