巨集和函式的區別

2021-08-24 17:25:42 字數 444 閱讀 2673

如何定義乙個巨集函式

#define min(x, y) ((x)<(y)?(x):(y))
int

min(

int a,

int b)

巨集和函式的區別

巨集做的是簡單的字串替換,而函式是引數傳遞,巨集的引數替換是直接替換,而函式是由實參傳遞給形參

巨集在編譯前執行(先用巨集體替換巨集名,再編譯),函式是在編譯後才呼叫

巨集引數不占用空間(只做字串替換),函式的引數傳遞是需要記憶體空間的

巨集不是型別安全的(編譯器不檢查型別),函式是型別安全的(引數資料型別不對,編譯器會報錯)

巨集編譯生成的目標檔案比普通的函式生成的目標檔案要大

在**量小、功能簡單的情況下,巨集函式比普通函式的效率要高,但執行複雜功能時,比如遞迴,巨集函式使得行內的**執行效率降低

巨集和函式的區別

巨集定義又稱巨集代替,巨集替換,其宣告方式為 define name parameter list stuff。其中,parameter list 引數列表 是乙個有逗號分隔的符號列表,它們可能出現在stuff中。必須注意的是,引數列表的左括號必須與name緊密相連,如果兩者之間有任何空格存在,則引...

巨集和函式的區別

巨集非常頻繁的運用於執行簡單的計算。那麼,為什麼不用函式呢?1.巨集在使用時比函式在程式的規模和速度更勝一籌。2.函式的引數必須申明為乙個特定的型別,於是它只能在型別合適的表示式使用。而巨集為無型別替換。而有些情況只能用巨集,就是按型別申請空間時。如 define malloc n,type typ...

巨集和函式的區別

語言學習過程中,我們總會使用函式和巨集,以提高 可讀性,而要想更好的使用它們,就得了解清楚巨集和函式的區別,下面我們就來細數一下巨集和函式到底有什麼不同 1.長度不同。當執行程式時,在預處理階段,巨集 被插入到程式中,使程式的長度大幅度增長,下面這個例子是在只有乙個巨集的情況下 include de...