巨集和函式的比較以及程式翻譯總結(一)

2021-08-19 08:20:48 字數 656 閱讀 8044

巨集和函式的不同就以以下兩個例子進行說明:

巨集函式:#define max(a,b) ((a)>(b)?(a):(b))

普通函式:max(a,b)

可以看出,巨集和函式有明顯的不同:

1.巨集做的是簡單的字串的替換,而函式是引數的傳遞,引數是有資料型別的。

2.巨集的引數替換是直接替換的,不經任何計算,而函式呼叫時將形參的值傳給形參。

3.巨集在編譯之前進行(先用巨集體替換巨集名,再進行編譯),而函式是在編譯之後執行時才呼叫的。

4.巨集的引數是不佔記憶體空間的,因為只做字串的替換,而函式呼叫時引數之間的傳遞,所以占用記憶體。

5.函式呼叫需要空間開銷,因為在函式呼叫時它既要儲存現場又要跳轉到另乙個函式呼叫中去執行,然後還要返回現場,但巨集函式中就不存在。

6.巨集與型別無關,可以使用於任何引數型別;而函式引數如果型別不同,就需要使用不同的函式。

7.巨集引數的求值需要考慮臨近操作符的優先順序,因此需要給他們加上括號;而函式引數只在函式呼叫時求值一次,將結果值傳遞給函式。因此表示式的求值結果更容易**。

程式環境和預處理總結

inline 函式和巨集的比較

define table comp x x 0?x 0 就定義了乙個巨集。為什麼要使用巨集呢?因為函式的呼叫必須要將程式執行的順序轉移到函式所存放 在記憶體中的某個位址,將函式的程式內容執行完後,再返回到轉去執行該函式前的地 方。這種轉移操作要求在轉去執行前要儲存現場並記憶執行的位址,轉回後要恢復現...

巨集與函式的比較

1 巨集的概念 巨集定義是指將乙個識別符號定義乙個字串,在源程式中該識別符號被字串替換的實現方式。巨集書寫的格式為 define 巨集名 參數列 巨集。2 巨集與函式的區別 3 巨集的優缺點 1 優點 1 提高程式的可讀性,而且方便修改 2 巨集只是進行簡單的字串替換,沒有引數的入棧和出棧,提高了程...

巨集與函式的比較

1 巨集的概念 巨集定義是指將乙個識別符號定義乙個字串,在源程式中該識別符號被字串替換的實現方式。巨集書寫的格式為 define 巨集名 參數列 巨集。2 巨集與函式的區別 3 巨集的優缺點 1 優點 1 提高程式的可讀性,而且方便修改 2 巨集只是進行簡單的字串替換,沒有引數的入棧和出棧,提高了程...