内联函数

来源:互联网 发布:淘宝联盟多店合并下单 编辑:程序博客网 时间:2024/06/05 20:30

浅谈程序内部

编译的最终产品是可执行程序,由一堆机器指令组成。运行程序时,操作系统将这些机器指定载入内存,每条指令都有自己的地址,随后操作系统逐步执行这些指令。执行遇到分支或者循环等其他条件时,将会跳到特定指令地址处。常规函数调用也是使程序跳到特定的指令处(被调用函数的首地址),并在函数结束时返回。更详细的过程是,遇到函数调用指令时,程序在函数调用后,立即存下当前指令地址,如果还需要传参数,则参数存放在堆栈中。跳到函数首地址之后,执行该函数的机器指令,结束后返回,即跳回到刚刚保存下来的地址。(若有函数返回值,则存在指定寄存器中)。由以上可知,调用函数会使程序来回跳动,则需要一定的时间上的开销。

C++内联

C++内联函数提供了另一种选择。编译器使相应的代码替换函数调用。则无需来回跳跃指令。内敛函数执行时间稍快,但代价是空间开销大。例如若调用了10次内联函数,则程序包含函数代码的10个副本。因此具体什么时候用内联函数,视情况而定。内联函数的使用方法是在声明或者定义前加关键字 inline。
另外要注意的是,内联函数定义必须在main函数前,且可以省略函数声明。