在c++中呼叫函式時,電腦要做很多事:呼叫前要先儲存暫存器,並在返回時恢復;而且還有實參到形參的傳值;如果乙個函式在原始碼中多次被呼叫,這樣就會很浪費計算機的資源,但是如果我們將這個函式宣告為內聯函式,就可不必有這樣的擔心了。
例如這樣乙個函式:
int max(int x,int y)
return x>y?x:y
如果將其宣告為內聯,即inline int max(int x,int y),則呼叫
cout《編譯器在編譯時將展開為
cout但一般來說,內聯函式機制適用於優化小,只有幾行**而且經常被呼叫的函式。大多數的編譯器都不支援遞迴函式的內聯。乙個2000行的函式也最好不要再呼叫點內聯展開。
注意:
內聯函式應該在標頭檔案中定義,這一點不同於其他函式。
類中的內聯函式:
類的內部的成員函式,預設是作為inline處理的,也就是當他們被呼叫時,編譯器將試圖在同一行展開該函式。
顯示的宣告inline函式:
可以在類的宣告中定義inline;
也可以在成員函式的定義中宣告inline;
c 筆記 inline 內聯函式
相當於將inline函式中的內容直接copy到inline函式呼叫處。不用執行進入函式的步驟,直接執行函式體 相當於巨集,卻比巨集多了型別檢查,真正具有函式特性 編譯器一般不內聯包含迴圈 遞迴 switch 等複雜操作的內聯函式 在類宣告中定義的函式,除了虛函式的其他函式都會自動隱式地當成內聯函式。...
c 基礎學習筆記 內聯函式(inline)
函式呼叫需要建立棧記憶體環境,進行引數傳遞,並產生程式執行轉移,這些工作都需要時間開銷,有些函式使用頻率高,但 卻很短,因此c 提供了inline函式,減少函式呼叫的成本。內聯函式的函式體限制 內聯函式中,不能含有複雜的結構體控制語句,如switch和while等。如果內聯函式有這些語句,則編譯將該...
inline函式 C 內聯函式 inline
inline要起作用,必須要與函式定義放在一起,而不是函式的宣告 inline 當編譯器處理呼叫內聯函式的語句時,不會將該語句編譯成函式呼叫的指令,而是直接將整個函式體的 插人呼叫語句處,就像整個函式體在呼叫處被重寫了一遍一樣,在執行時是順序執行,而不會進行跳轉。優點 內聯函式沒有執行函式呼叫的開銷...