1.內聯函式在編譯的時候將不進行函式呼叫,編譯器將內聯函式的**貼上在呼叫(形式上呼叫)處,可以提高效率。
2.內聯函式只能是**很少很簡單的函式,因為如果乙個很大很複雜的函式即使設為內聯,編譯器也將自動設定該函式為非內聯
1、頻繁呼叫函式事列
//頻繁呼叫乙個小函式
#includeusing namespace std;
bool isnumber(char); // 函式宣告
//------------------------------------
int main()
//----------------------------------
bool isnumber(char ch)
截圖:
2、修改1
所以函式呼叫的開銷相對來說佔的比重就大了。為了免去呼叫開銷,提高效率,可將程式改寫為:
// 將小函式「融化」在呼叫處
//********************
#includeusing namespace std;
//------------------------------------
int main()
3、設定內聯函式
上面的程式在if語句中用表示式替換了函式呼叫。在程式執行上,因為免去了大量的函式呼叫開銷,提高了執行效率。
由於isnumber函式比相應的表示式可讀性好,所以若程式中多處出現isnumber,而又將其替換為複雜的實現語句的話,就會降低程式的可讀性。我們既要用函式呼叫來體現其結構化和可讀性,又要是效率盡可能地高。解決辦法就是將這種小函式宣告為內聯(inline):
// 內聯函式
#includeusing namespace std;
inline bool isnumber(char); // 內聯宣告
//-----------------------------------
int main()
bool isnumber(char ch)
4、注意
對函式的內聯宣告必須在呼叫之前。因為內聯函式的**在程式執行時是直接潛在呼叫處執行的,他不影響鏈結,只在編譯時確定執行**。因此編譯時,在呼叫之前看到內聯宣告就是十分必要。
1、內聯函式
2、c++學習之路
C 之內聯函式
一 目的 提高程式執行速度所做的一項改進。二 內聯函式與常規函式的區別 編譯過程的最終產品是程式 由一組機器語言指令組成。執行程式時作業系統將這些指令載入到計算機記憶體中,因此每條指令都有特有的記憶體位址。計算機隨後逐步執行這些命令。執行到函式呼叫指令時,程式將在函式呼叫後立即儲存該指令的記憶體位址...
C 之內聯函式
內聯函式是一種特殊的函式,具有普通函式的特徵 引數檢查,返回型別等 內聯函式是對編譯器的一種請求,因此編譯器可能拒絕這種請求 內聯函式由 編譯器處理,直接將編譯後的函式體插入呼叫的地方 巨集 片段 由預處理器處理,進行簡單的文字替換,沒有任何編譯過程 注 內聯函式宣告時inline關鍵字必須和函式定...
c 之內聯函式
若有不對,歡迎道友予以指正,提前謝過。內聯函式 定義時需要關鍵字inline。實際上是和巨集定義一般,在呼叫函式的地方,用函式體進行替換。inline需要在函式定義的時候加入才有效,在宣告的時候不需要 而類宣告中的成員函式自動成為內聯函式。tip 只有當函式只有 10 行甚至更少時才將其定義為內聯函...