-
define生效于编译预处理阶段,const生效于编译阶段
-
define只是简单的字符串替换,在编译预处理阶段将所有用到宏的地方进行字符串替换,没有进行数据类型检查;const有数据类型,编译器要对其进行类型检查
-
define不分配内存,而const在静态区分配内存,因此define没有地址,不可以使用指针指向,const有地址可以使用指针指向
-
define不分配内存,只是将宏名进行替换,有多少次替换,内存中就有多少次拷贝(也就是给拷贝分配内存),内存消耗过大;const在静态区分配空间,内存只有一次拷贝
-
不可以对宏常量进行调试,可以对const常量进行调试