1. const定义的常量实际是一个只读变量,有类型
#define定义的常量没有类型
2. #define在编译的预处理阶段替换起作用,而const在编译、运行时都起作用
3. #define只是简单的字符串替换,不会做类型检查,会产生边缘效应
const会进行类型检查,避免出现低级错误
4. #define占用代码段空间,const占用数据段空间
5. #define不能调试,const能调试
6. const不能重定义,而#define可以通过#undef取消定义,实现重定义
7. #define可以用于避免头文件重复定义,而const不能