内联函数
内联函数(inline function) 是一种 将函数调用语句在编译阶段展开为函数体代码本身 的机制,从而省去函数调用的开销(如压栈、跳转、返回等)。
- 普通函数调用过程: 调用 → 参数压栈 → 跳转 → 执行 → 返回 → 弹栈 → 接收返回值 📉 效率低,函数调用有开销(尤其是小函数)
- 内联函数过程: 直接替换为函数体代码 → 无跳转、无栈操作 📈 高效,特别适合频繁调用的小函数
要采用这项特性,须在函数声明前加上关键字 inline、函数定义前加上关键字 inline。通常做法是省略原型,将整个定义放在之前提供原型的位置。
cpp
inline double square(double x) { return x * x; }
int main() {
double a;
a = square(5.0); // a = 5.0 * 5.0
}✅ 适用场景:
- 小型、频繁调用的函数;
inline 是对 编译器的建议,是否真的展开由编译器决定! 现代编译器(如 Clang/GCC/MSVC)会根据:
- 函数体复杂度、
- 调用频率、
- 编译优化等级(如
-O2,-O3)
来决定是否真正展开。