天天看點

inline函數的用處

比如 

int g(int x) 

return x + x; 

int f() 

return g(); 

這樣f會調用g,然後g傳回x + x給f,然後f繼續把那個值傳回給調用者。 

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

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

這就是inline函數,也就是所謂的内聯函數。 

--------- 

但是現在不是這樣了。 

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

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

一個可執行檔案的cpp檔案中一個函數隻能被定義一次。如果你把函數定義在一個.h檔案中并讓兩個cpp包含就會造成這個函數分别在兩個cpp中被定義産生錯誤。但是inline函數是允許在多個cpp中多次定義的,就解決了這個問題。

繼續閱讀