• define生效于编译预处理阶段,const生效于编译阶段

  • define只是简单的字符串替换,在编译预处理阶段将所有用到宏的地方进行字符串替换,没有进行数据类型检查;const有数据类型,编译器要对其进行类型检查

  • define不分配内存,而const在静态区分配内存,因此define没有地址,不可以使用指针指向,const有地址可以使用指针指向

  • define不分配内存,只是将宏名进行替换,有多少次替换,内存中就有多少次拷贝(也就是给拷贝分配内存),内存消耗过大;const在静态区分配空间,内存只有一次拷贝

  • 不可以对宏常量进行调试,可以对const常量进行调试

posted on 2023-07-23 09:52  小凉拖  阅读(51)  评论(0编辑  收藏  举报