前言

最近在看C++相关内容,内联函数inline function)是C++语言中的一个特性,这里简单的记录一下,方便自己回顾和学习。

正文

引入原因

程序执行过程就是函数互相调用的过程,函数入栈出栈是有时间和空间开销的。如果函数很复杂,执行时间长,那么入栈出栈的操作相比之下可以忽略,但如果函数较简单,那么相比之下入栈出栈的开销就不能忽略了。

因此c++提供了一种代码替换的方法,使用inline修饰的函数,称为内联函数。

作用

内联函数是为了提高程序的执行效率,特别是在小型、频繁调用的函数中。

例子

内联函数(Inline Function)允许程序员请求编译器将函数的定义直接插入到所有调用该函数的地方,而不是创建一个新的函数调用栈帧。这意味着当函数被调用时,它的代码会直接嵌入到调用处,而不是跳转到函数定义处执行。

下面简单举个例子说明。

有一个普通的非内联函数:

 int add(int a, int b) {
     return a + b;
 }

执行该函数

int result =  add(5,10);

编译器通常会生成一个函数调用指令,这涉及到跳转和返回操作。

但是,如果是内联函数。

 inline int add(int a, int b) {
     return a + b;
 }

那么编译器在处理调用时,可能会直接将 add 函数的代码插入到调用点,生成如下等效的代码:

 int result = 5 + 10;

优缺点

优点
  1. 减少函数调用的开销

  2. 提高执行效率

  3. 避免宏定义的缺点

缺点
  1. 代码膨胀

  2. 编译时间增加

  3. 递归函数不适合作为内联函数

  4. 调试困难

参考文章

  1. inline(内联函数)

  2. inline内联函数

  3. C++内联函数inline

相关文章

暂无评论

none
暂无评论...