這篇介紹宏和函數(shù)的區(qū)別。
宏是C語言預處理命令的一種。所謂宏定義,就是用一個標識符來表示一個字符串,如果在后面的代碼中出現(xiàn)了該標識符,那么就全部替換成指定的字符串。其形式如下:
#define 宏名稱 替換文本
宏
宏和函數(shù)的區(qū)別如下:
宏做的是簡單的字符串替換(注意是字符串的替換,不是其他類型參數(shù)的替換),而函數(shù)的參數(shù)的傳遞,參數(shù)是有數(shù)據(jù)類型的,可以是各種各樣的類型;
宏的參數(shù)替換是不經(jīng)計算而直接處理的,而函數(shù)調(diào)用是將實參的值傳遞給形參;
宏占用的是編譯的時間,而函數(shù)占用的是執(zhí)行時的時間。即宏是在編譯之前進行的,先用宏體替換宏名,然后再編譯;而函數(shù)是編譯之后,在執(zhí)行時,才調(diào)用的;
宏的參數(shù)是不占內(nèi)存空間的,因為只是做字符串的替換,而函數(shù)調(diào)用時的參數(shù)傳遞則是具體變量之間的信息傳遞,形參作為函數(shù)的局部變量,是占用內(nèi)存的;
函數(shù)的調(diào)用是需要付出一定的時空開銷的,因為系統(tǒng)在調(diào)用函數(shù)時,要保留現(xiàn)場,然后轉(zhuǎn)入被調(diào)用函數(shù)去執(zhí)行,調(diào)用完,再返回主調(diào)函數(shù),此時再恢復現(xiàn)場,這些操作在宏中是沒有的。
-
C語言
+關注
關注
180文章
7595瀏覽量
135924 -
函數(shù)
+關注
關注
3文章
4286瀏覽量
62337 -
代碼
+關注
關注
30文章
4728瀏覽量
68250
發(fā)布評論請先 登錄
相關推薦
評論