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