1.#define 在编译的预处理阶段起作用,const在编译运行的时候起作用
所以#define不能被封装,const可以。
2.#define只是替换,没有类型检查,const有对应的数据类型,要进行判断,可以避免一些低级错误
3.const变量可以进行调试,#define变量不能,因为已经被替换了
#define n 100;
const int n=100;
取const的地址合法,取#define和enum的地址不合法
最好用const或者enum替换#define
typedef
typedef用来定义关键字,冗长的类型的别名,语句以;结尾,#define不以分号结尾
以下两行代码截然不同
typedef int* p1;
#define p2 int*
p1 a,b;//定义了两个整型指针变量a和b
p2 a,b;//定义了一个整型指针变量a和一个整型变量b