1. 程式人生 > >【C++】inline行內函數

【C++】inline行內函數

inline行內函數(但我感覺inline作用不大)

比如

int g(int x)
{
    return x + x;
}
int f(int x)
{
    return g(x);
}

這樣f會呼叫g,然後g返回x + x給f,然後f繼續把那個值返回給呼叫者。

如果g是inline的話。f會被直接編譯成。

int f(int x)
{
    return x + x;
}

相當於把g執行的操作直接融合到f裡。這樣減少了呼叫g消耗的時間,但同時也增大了f的尺寸。

這就是inline函式,也就是所謂的行內函數。

---------------------------------------------------------------------------------------------------------------------------------

但是現在不是這樣了。

現在的編譯器會自動決定是否對函式進行上面的操作,而不是根據你前面加不加inline。

但是inline本身還是有另外一個意義:

一個可執行檔案的cpp檔案中一個函式只能被定義一次。如果你把函式定義在一個.h檔案中並讓兩個cpp包含就會造成這個函式分別在兩個cpp中被定義產生錯誤(這是由於,如果僅僅是函式的話,那麼在編譯時可以通過,但是在連結時出現了重複函式,導致連結出問題,內聯不出問題是因為將文字帶入到目標cpp中)。但是inline函式是允許在多個cpp中多次定義的,就解決了這個問題。