1. 如何定義:
- 用於實現的關鍵字:
在函數定義時省略,在函數實現時用inline修飾。
2. 編譯器如何實現:
- 把函數體複製到inline函數被調用處。
- 爲其分配內存空間保存局部變量。
- 把linline函數的輸入參數和返回值映射到調用它的函數中。
- 設置inline函數的返回點。
3. 分析:
-
動機:
函數調用會產生開銷,因此當所調用函數比較短小時,不如直接運行函數中的代碼,而不分配新的棧幀。 -
優劣:
- 優: 節省函數調用的開銷。
- 劣:inline函數出現的每個地方都要複製函數體,使代碼變長,可能造成內存空間喫緊。
-
適用場景:
- 代碼短小(緩解代碼膨脹問題),執行時間比函數調用開銷小(收益大)。