黑色印記
內聯函式和普通函式相比可以加快程式執行的速度,因為不需要中斷呼叫及返回的過程。在編譯階段內聯函式可以直接被鑲嵌到目標**中。而巨集只是乙個簡單地替換。
內聯函式的優勢在於做引數型別檢查,而巨集定義不會。
我們知道內聯函式和巨集定義是犧牲記憶體空間換取執行效率的。因此,是否使用內聯函式就要根據實際情況了。通常我們可以用於以下情況:
1.乙個函式不斷被重複使用。
2.函式只有簡單地幾行,且函式內不包含for,while,switch語句。
巨集在c語言中是極其重要的,而在c++裡用的就少多了。因為它將在編譯器看到程式的正文前重新擺布這些正文,也是許多程式設計工具的麻煩。因此在c++中第一規則是絕不應該使用它,除非你不得不這樣做。
注意事項:
內聯函式關鍵字inline必須與函式定義體放在一起才能使函式函式成為內聯。僅將inline放在函式宣告前是不起任何作用的。如下:
inline void foo(int x, int y); //僅與函式宣告放在一起
void foo(int x, int y) 錯誤
應該如下:void foo(int x , int y);
inline void foo (int x , int y ) //inline與函式定義體放在一起
內聯函式和巨集函式
內聯函式和普通函式的區別 普通函式呼叫時是生成呼叫指令跳轉 然後當 執行到呼叫位置時,跳轉到函式所在的 段中執行 而 內聯函式就是直接把函式編譯好的二進位制指令複製到函式的呼叫位置 優點 提高了程式的執行速度 沒跳轉沒返回當然速度快了 但這樣會導致可執行檔案增大 冗餘 也就是犧牲空間來換取時間 顯式...
巨集 函式和內聯函式
巨集和函式的區別 1.巨集做的是簡單的字串替換 注意是字串的替換,不是其他型別引數的替換 而函式的引數的傳遞,引數是有資料型別的,可以是各種各樣的型別.2.巨集的引數替換是不經計算而直接處理的,而函式呼叫是將實參的值傳遞給形參,既然說是值,自然是計算得來的.3.巨集在編譯之前進行,即先用巨集體替換巨...
巨集和函式和內聯函式
巨集和函式的區別 巨集做的是簡單的字串替換 注意是字串的替換,不是其他型別引數的替換 而函式的引數的傳遞,引數是有資料型別的,可以是各種各樣的型別.巨集的引數替換是不經計算而直接處理的,而函式呼叫是將實參的值傳遞給形參,既然說是值,自然是計算得來的.巨集在編譯之前進行,即先用巨集體替換巨集名,然後再...