C 语言 - 内联函数

内联函数

您有时可能会在其他人的函数中看到 inline 关键字。作为初学者,您不需要经常使用它,但了解它的含义是很好的。

内联函数是一种小型函数,它请求编译器将其代码直接插入到函数被调用的地方,而不是跳转到该函数执行。

这可以使简短、频繁使用的函数运行得更快一点,因为它消除了普通函数调用的微小延迟。

让我们比较一下普通函数和内联函数:

普通函数

int square(int x) {
  return x * x;
}

内联函数

inline int square(int x) {
  return x * x;
}

两个函数的工作方式相同。唯一的区别是内联版本建议编译器将函数的代码直接复制到使用它的地方。

内联函数示例

下面是一个使用内联函数的简单示例:

实例

#include <stdio.h>

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

int main() {
  printf("%d", add(5, 3));
  return 0;
}

亲自试一试

在这里,编译器可能会将 add(5, 3) 直接替换为代码 5 + 3 - 从而节省调用单独函数所需的时间。

何时不应使用内联

内联函数最适合小型简单的函数。避免将它们用于:

  • 大型函数(它们会使您的程序变大)
  • 递归函数
  • 很少被调用的函数

过多的内联函数会使您的程序变慢且变大,这个问题被称为代码膨胀。

内联函数与普通函数对比

普通函数 内联函数
每次调用时,代码跳转到该函数 代码直接插入到调用的地方
稍慢(有微小延迟) 稍快
适合大型函数 适合小型函数

在本教程中,我们将继续使用普通函数。

总结

  • 内联函数使用 inline 关键字定义。
  • 它们可以使小型、常用的函数运行得更快。
  • 编译器决定是否实际内联一个函数。
  • 主要用于简短、简单的函数。