知識點 內聯函式可以避免函式呼叫開銷(213頁)

2021-10-02 14:31:56 字數 712 閱讀 4466

定義乙個函式

int add(int a, int b)

它的內聯版本只要加上inline關鍵字。

inline int add(int a, int b)

那麼如下呼叫

cout << add(1, 2) << endl;
將在編譯過程中展開成類似下面的形式

cout << a + b << endl;
從而消除了add函式的執行時開銷。

注意,內聯說明只是向編譯器發出的乙個請求,編譯器可以選擇忽略這個請求。這意味著當函式不適合內聯或者無法展開的時候,編譯器會把它當成普通函式來呼叫,而這個過程是不會報錯的。5句以下,頻繁使用,這是內斂函式的慣例標準。

wp007198889 2013-11-10 21:27

你這個例子怎麼知道函式用了內聯特性呢,在編譯器無法內聯嵌入時 會按照普通函式處理,又不會報錯。

yxlovemoney 

「... 但內聯函式一般只對5個語句以下而頻繁使用的函式宣告為內聯函式,有迴圈語句和switch語句,遞迴是機制決定不會被置換的.又像有1000行的函式,編譯系統也會忽略你的inline宣告,將其按普通函式處理.

C 知識點1(內聯函式)

1.內聯函式 在c 中我們通常定義以下函式來求兩個整數的最大值 複製 如下 int max int a,int b 為這麼乙個小的操作定義乙個函式的好處有 閱讀和理解函式 max 的呼叫,要比讀一條等價的條件表示式並解釋它的含義要容易得多 如果需要做任何修改,修改函式要比找出並修改每一處等價表示式容...

C 知識點9 函式過載,預設實參,內聯函式

函式過載 同一作用域內,函式名相同但是形參列表不同的函式,為過載函式 下面兩個函式就是過載函式,編譯時會根據形參列表將這兩個函式編譯成不同的函式,在呼叫時傳入對應的引數就可以呼叫不同的過載函式 上述 定義的三個過載函式並且在主函式中呼叫過載函式overloadfunc,但是編譯器無法判斷到底要呼叫哪...

函式知識點

1.函式 函式就是一種封裝 2.定義函式 function 函式名 3.函式不會自動執行,需要被呼叫才可以執行 函式名 4.函式命名規則 與變數命名規則一致 1 以字母 開頭 2 可以包含數字 字母 3 區分大小寫 4 不能使用關鍵字和保留字 駝峰命名法 若名稱由多個單詞組成,則從第二個單詞開始,首...