1. 类型检查
const定义的常量有类型,#define定义的常量没有类型,在编译的时候前者会进行类型安全检查,后者仅仅是作简单的替换
2. 内存分配
const定义的常量在编译时分配内存,而#define定义的常量是在预编译的时候进行替换,不分配内存
3. 作用域不同
const定义的常变量作用域为该变量的作用域范围;而#define定义常量作用域为从它定义的地方开始到程序结束,或者到#undef
const定义的常量有类型,#define定义的常量没有类型,在编译的时候前者会进行类型安全检查,后者仅仅是作简单的替换
const定义的常量在编译时分配内存,而#define定义的常量是在预编译的时候进行替换,不分配内存
const定义的常变量作用域为该变量的作用域范围;而#define定义常量作用域为从它定义的地方开始到程序结束,或者到#undef