- const有類型,可進行編譯器安全檢查,#define 無類型,不可進行類型檢查
- const 有作用域,而#define 不重視作用域,默認定義在指定作用域下有效的常量,那么#define 就不能用(可以用#undef結束宏定義生命)
- 宏常量沒有命名空間
namespace MySpace{
#define num 1024
}
void test(){
//cout <<MvSpace::NUM<<endl;//錯誤
//int num =100;//命名沖突
cout<<num<<endl;
}