C 之內聯函式講解

2021-07-22 06:41:22 字數 1308 閱讀 9863

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 行甚至更少時才將其定義為內聯函...