內聯函式 巨集替換

2021-07-25 20:58:17 字數 466 閱讀 8769

傳智掃地僧課程學習筆記。

inline int myfunc( int a, int b )

內聯函式的實現和宣告必須在一起!!!

你可以簡單的理解為,內聯函式和巨集替換類似,

也因此沒有真正函式的壓棧,出棧,

適合短小的函式,

內聯是一種請求,編譯器不一定就這麼處理,

內聯的限制:

不能有迴圈語句,

不能有過多的條件判斷,

下面是內聯和巨集替換的乙個對比小案例,

//帶引數的巨集

#define myfunc(a, b) ((a) < (b) ? (a) : (b))

inline int myfunc(int a, int b)

int main1402()

這種++a的形式,少用,

這個巨集替換蠻經典,還有要特別注意巨集替換的()數量,

內聯函式與巨集替換的區別

1 內聯函式在執行時可除錯,而巨集不可以 2 內聯函式可以訪問類的成員變數,而巨集不可以 3 在類中宣告同時定義的簡單的函式,會自動轉換為內聯函式 4 編譯器會對內聯函式的引數型別做安全檢查 內聯函式具有巨集的替換效果,以及普通函式的安全檢查 define max a,b a b a b 一定要帶括...

c 巨集替換與內聯函式的區別

includeusing namespace std define myfunc a,b a b a b inline int myfunc int a,int b int main 內聯函式執行結果 巨集替換執行結果 通過了解內聯函式的內部機制後,很自然會想到同樣是 的替換,那麼內聯函式的替換與巨...

巨集與內聯函式

函式作為一種抽象機制,對解決大型複雜問題起到了很大作用。但是,由於函式呼叫時需要開銷的,例如,函式呼叫時需要保護呼叫者的執行環境,進行引數傳遞,執行呼叫命令,為區域性變數分配空間以及執行返回指令等,因此函式會帶來程式執行效率的下降,特別是對一些小函式的頻繁呼叫。c 提供了兩種解決上述問題的辦法 巨集...