比如int g(int x)
int f()
這樣f會呼叫g,然後g返回x + x給f,然後f繼續把那個值返回給呼叫者。
如果g是inline的話。f會被直接編譯成。
int f()
相當於把g執行的操作直接融合到f裡。這樣減少了呼叫g消耗的時間,但同時也增大了f的尺寸。
這就是inline函式,也就是所謂的內聯函式。
---------
但是現在不是這樣了。
現在的編譯器會自動決定是否對函式進行上面的操作,而不是根據你前面加不加inline。
但是inline本身還是有另外乙個意義:
乙個可執行檔案的cpp檔案中乙個函式只能被定義一次。如果你把函式定義在乙個.h檔案中並讓兩個cpp包含就會造成這個函式分別在兩個cpp中被定義產生錯誤。但是inline函式是允許在多個cpp中多次定義的,就解決了這個問題。
C C 的 inline關鍵字修飾的函式
inline 與巨集的區別 巨集是在與預編譯階段處理的,沒有型別和安全檢查 而inline是在編譯階段處理的,有型別和安全檢查。也可以說,inline是一種更安全的巨集。與static修飾函式的區別 static修飾的函式有開棧和清棧的開銷,inline沒有。缺陷inline修飾的函式在呼叫點直接將...
inline函式 C 內聯函式 inline
inline要起作用,必須要與函式定義放在一起,而不是函式的宣告 inline 當編譯器處理呼叫內聯函式的語句時,不會將該語句編譯成函式呼叫的指令,而是直接將整個函式體的 插人呼叫語句處,就像整個函式體在呼叫處被重寫了一遍一樣,在執行時是順序執行,而不會進行跳轉。優點 內聯函式沒有執行函式呼叫的開銷...
inline 內聯函式
一 inline關鍵字用來定義乙個類的內聯函式,引入它的主要原因是用它替代c中表示式形式的巨集定義。表示式形式的巨集定義一例 define expressionname var1,var2 var1 var2 var1 var2 為什麼要取代這種形式呢,且聽我道來 1 首先談一下在c中使用這種形式巨...