#define
进行的是宏定义,在代码的预处理阶段进行文本替换,const
则是在代码的编译阶段中被计算;#define
不会对数据进行类型的检查和计算,const
变量则和其他变量一样参与计算和类型检查;#define
没有自己的作用域,全局中均可使用,而 const
和其他变量一样有自己的作用域;同上,
#define
会保存在在内存的代码段中,而 const
则会保存在静态区或者栈内存中;const
变量有自己的符号表,而 #define
没有,所以 const
更利于调试。