C 學習 內聯函式

2021-08-28 20:07:54 字數 981 閱讀 4313

巨集 可以做兩件事情:1、定義常量 2、定義函式

#define a 10

#define add(x,y) (x+y)

c++ 建議用:

1、const 替換巨集常量

2、用 內聯函式 替換巨集函式

內聯函式定義:在函式定義前加 inline 關鍵字 注意:在宣告前加無效

巨集函式是在預處理期間進行處理

內聯函式在編譯進行處理,具備普通函式的相應功能 引數檢查 型別檢查。。

函式執行是有開銷的:入棧、出棧、跳轉等開銷

1、內聯函式在執行用函式體進行替換,

2、內聯是一種請求,不一定成功

3、編譯完後的程式中不存在函式體

#include // 巨集 可以做兩件事情:1、定義常量 2、定義函式

#define a 10

#define add(x,y) (x+y)

// c++ 建議用:

// 1、const 替換巨集常量

// 2、用 內聯函式 替換巨集函式

// 內聯函式定義:在函式定義前加 inline 關鍵字 注意:在宣告前加無效

// 巨集函式是在預處理期間進行處理

// 內聯函式在編譯進行處理,具備普通函式的相應功能 引數檢查 型別檢查。。

// 函式執行是有開銷的:入棧、出棧、跳轉等開銷

// 1、內聯函式在執行用函式體進行替換,

// 2、內聯是一種請求,不一定成功

// 3、編譯完後的程式中不存在函式體

// 注意事項:

// 1、函式體不能太龐大,5行以下

// 2、不能有迴圈語句

// 3、不能有複雜的條件判斷語句

// 4、不能對內聯函式進行取位址操作 ===> 沒有函式體

// 實現機制:在符號表中進行實現

inline int add(int a, int b)

int main()

c 再學習(內聯函式)

什麼是內聯函式?以inline修飾的函式叫做內聯函式,編譯時c 編譯器會在呼叫內聯函式的地方展開,沒有函式壓棧的開銷,內聯函式提公升程式執行的效率。內聯函式與普通函式執行過程有何不同?普通函式的執行過程中,首先要儲存暫存器的位置,然後傳入引數 這時程式轉到函式處執行,然後再返回,而內聯函式不需要這麼...

學習筆記 C 內聯函式

對於乙個頻繁使用的短小函式,在c語言中應該用巨集定義實現,在c 中用inline實現。巨集定義與內聯函式的不同用法000。在c語言中,寫一手漂亮的巨集定義是非常有必要的,方式出錯 提高 的移植性和可讀性等。尤其是一些常用或通用的功能函式或者 段,這些功能既可以寫成函式,也可以封裝為巨集定義。就功能性...

c 學習三 C 內聯函式

使用函式能夠避免將相同 重寫多次的麻煩,還能減少可執行程式的體積,但也會帶來程式執行時間上的開銷。函式呼叫在執行時,首先要在棧中為形參和區域性變數分配儲存空間,然後還要將實參的值複製給形參,接下來還要將函式的返回位址 該位址指明了函式執行結束後,程式應該回到 繼續執行 放入棧中,最後才跳轉到函式內部...