---
# System prepended metadata

title: inline
tags: [C++Book]

---

# inline
###### tags: `C++Book`
在函數宣告加入 inline 關鍵字，編譯器會一不一樣的方法呼叫

• 函數中的程式碼或處理較短，並且常呼叫使用的話，可以給他加上個 inline
### • inline內前函數的執行過程
一般而言，當我們撰寫函數，並呼叫使用，電腦的機器語言指令會紀錄目前工作階段的記憶體位址，然後跳至函數的記憶體位置處理完程序後，並回到原先的位址上，而這樣來回會造成時間上的額外負擔。
C++於是提供這種內嵌函數，當我們加入關鍵字時，在編譯時便會把函數中的程式直接展開

 ![](https://i.imgur.com/rqRICcD.png)

* 另外，即便加入inline想要使用內嵌函數，編譯時也不一定就會實作，編譯器會選擇，如果你執行的函數中程式碼所需時間大於處理呼叫函數的時間，則能節省的時間比較少
* 如果是遞迴的程式，使用inline可能編譯器也不會理你（因為裡面的不斷呼叫運算會使編譯器判斷為此函數中程式的行可能會過大）
