#define 和const,enum typedef

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

猜你喜欢

转载自blog.csdn.net/weixin_43425693/article/details/90018880