1. 如何定义:
- 用于实现的关键字:
在函数定义时省略,在函数实现时用inline修饰。
2. 编译器如何实现:
- 把函数体复制到inline函数被调用处。
- 为其分配内存空间保存局部变量。
- 把linline函数的输入参数和返回值映射到调用它的函数中。
- 设置inline函数的返回点。
3. 分析:
-
动机:
函数调用会产生开销,因此当所调用函数比较短小时,不如直接运行函数中的代码,而不分配新的栈帧。 -
优劣:
- 优: 节省函数调用的开销。
- 劣:inline函数出现的每个地方都要复制函数体,使代码变长,可能造成内存空间吃紧。
-
适用场景:
- 代码短小(缓解代码膨胀问题),执行时间比函数调用开销小(收益大)。