c語言宏和函數(shù)的區(qū)別 帶參數(shù)宏定義和函數(shù)的區(qū)別?
帶參數(shù)宏定義和函數(shù)的區(qū)別?1. 當(dāng)編譯器編譯源代碼時(shí),宏將被簡(jiǎn)單地替換,沒有任何邏輯檢測(cè),即簡(jiǎn)單的代碼復(fù)制。2. 定義宏時(shí)不考慮參數(shù)類型。3. 參數(shù)宏的使用將使具有相同功能的代碼塊在目標(biāo)文件中有多個(gè)副
帶參數(shù)宏定義和函數(shù)的區(qū)別?
1. 當(dāng)編譯器編譯源代碼時(shí),宏將被簡(jiǎn)單地替換,沒有任何邏輯檢測(cè),即簡(jiǎn)單的代碼復(fù)制。
2. 定義宏時(shí)不考慮參數(shù)類型。
3. 參數(shù)宏的使用將使具有相同功能的代碼塊在目標(biāo)文件中有多個(gè)副本,這將增加目標(biāo)文件的大小。
4. 參數(shù)宏的運(yùn)行速度比函數(shù)快,因?yàn)椴恍枰獏?shù)棧的壓出操作。
5. 在定義參數(shù)宏時(shí),應(yīng)該更加小心,并添加更多的方括號(hào)。
6. 該函數(shù)只存在于目標(biāo)文件中的一個(gè)位置,這樣可以節(jié)省程序空間。
7. 函數(shù)的調(diào)用會(huì)涉及參數(shù)的傳遞,壓棧/出棧操作比較慢。
8. 函數(shù)的參數(shù)有傳遞值和地址(指針)的問題,但參數(shù)宏不存在。
比較函數(shù)式宏定義和普通函數(shù)的區(qū)別?
不同。雖然函數(shù)是相似的,但是函數(shù)將生成獨(dú)立的代碼,并且每次調(diào)用都將在相同的位置執(zhí)行代碼,無論執(zhí)行多少次。宏定義是簡(jiǎn)單的文本替換,生成的代碼是程序替換后生成的代碼。簡(jiǎn)而言之,每次宏被替換后在程序中使用時(shí)都會(huì)產(chǎn)生類似的代碼,并且替換后產(chǎn)生的代碼存在于程序的不同位置。宏定義不檢查參數(shù)類型,它們只是替換文本