c 筆記 inline 內聯函式

2021-10-22 20:28:18 字數 745 閱讀 3192

相當於將inline函式中的內容直接copy到inline函式呼叫處。

不用執行進入函式的步驟,直接執行函式體;

相當於巨集,卻比巨集多了型別檢查,真正具有函式特性

編譯器一般不內聯包含迴圈、遞迴、switch 等複雜操作的內聯函式;

在類宣告中定義的函式,除了虛函式的其他函式都會自動隱式地當成內聯函式。

替換

inline函式體複製到inline函式的呼叫點處
分配空間

為所用的inline函式中的區域性變數分配記憶體空間
引數對映

將inline函式的輸入引數和返回值對映到呼叫方法的區域性變數空間中
多返回點處理

inline函式中存在多個返回點,將其轉變為inline函式**塊末尾的分支(是應用goto)
提高執行速度。與巨集函式一樣被呼叫處**展開,節省了引數壓棧,棧幀開闢與**,結果返回等的消耗。

** 安全檢查和自動型別轉換**。inline**展開時會進行型別檢查和自動型別轉換,而巨集定義不會。

類中宣告同時定義函式可以自動轉換為inline,因此可以訪問類的成員變數,而巨集不行。

inline函式執行時可除錯,而巨集定義不行。

**膨脹,消耗更多記憶體空間: 以展開導致**膨脹的代價,消除函式呼叫的開銷。

無法隨函式庫公升級而公升級

是否內聯,程式設計師不可控

inline函式 C 內聯函式 inline

inline要起作用,必須要與函式定義放在一起,而不是函式的宣告 inline 當編譯器處理呼叫內聯函式的語句時,不會將該語句編譯成函式呼叫的指令,而是直接將整個函式體的 插人呼叫語句處,就像整個函式體在呼叫處被重寫了一遍一樣,在執行時是順序執行,而不會進行跳轉。優點 內聯函式沒有執行函式呼叫的開銷...

c 學習筆記 內聯函式(inline)

在c 中呼叫函式時,電腦要做很多事 呼叫前要先儲存暫存器,並在返回時恢復 而且還有實參到形參的傳值 如果乙個函式在原始碼中多次被呼叫,這樣就會很浪費計算機的資源,但是如果我們將這個函式宣告為內聯函式,就可不必有這樣的擔心了。例如這樣乙個函式 int max int x,int y return x ...

C 內聯函式 inline

巨集 就是使用乙個字串來代替乙個表示式 或函式呼叫 編譯之前,預處理器會使用這個巨集字串所代表的表示式 或函式呼叫 來替換所有出現的巨集字串,這樣的話,用巨集表示的函式呼叫 就不用另外開闢函式棧,不用保護和恢復函式呼叫現場,這樣就提高了 的執行效率 所以,呼叫乙個巨集比呼叫乙個函式更有效 但是呼叫巨...