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