天天看点

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

内联函数:

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

assume cs:code

code segment

s:
nop
...
ret

main:

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

这个汇编代码,其实上就能很简单的阐述函数的调用,首先从入口start进入执行,遇到call s,然后我们将 mov ax,ex 这条指令的地址压入栈中,然后相对转跳到 s标号这里,然后开始执行s标号下的内容,当执行完ret后,ret指令会将栈里的数据 pop ip上,此时我们的cs:ip又指向了mov ax,ex这条指令,完成了函数的调用。

由这个过程我们可以看出,函数的调用执行了地址的转跳,这个转跳会浪费一些时间,这也是和内联函数的不同的地方,当然这个过程节省了空间,因为通过地址转跳,我们不用再重新写一遍这个指令,当然就不用开新的空间,这里画应该划重点。