1.宏定義在編譯前完成替換,至關於直接插入代碼,替換以後的代碼參與編譯,運行時不存在函數調用,運行就更快。函數調用就須要跳轉到具體的函數,速度就更慢。ide
2.宏定義直接插入代碼,沒有返回值。函數有返回值。函數
3.宏定義沒有參數類型檢測,函數有參數類型檢測。it
4.宏定義後不加分號。編譯
------------------------------------------------------class
1.宏主要用於定義常量及書寫複雜的內容;typedef主要用於定義類型別名。數據類型
2.宏替換髮生在編譯階段以前,屬於文本插入替換;typedef是編譯的一部分。數據
3.宏不檢查類型;typedef會檢查數據類型。di
4.宏不是語句,不在最後加分號;typedef是語句,要加分號標識結束。view