要把typedef是一种彻头彻底的“封装”类型--声明之后不能再往里面添加别的东西。
把#define看做是在预处理时进行的单纯的字符替换
区别1:
能使用其他类型说明符对宏定义进行扩展,但typedef不能。
#define peach int
unsigned peach i; //没有问题
typedef int banana;
unsigned banana i; //错误,非法
区别2:
在连续变量声明中,typedef能保证这些连续的变量都是同一种类型,但#define不能
typedef int * int_ptr;
int_ptr p1,p2; //p1,p2都是int *指针
**********************************
#define int_ptr int *
int_ptr p1,p2;
预处理经过宏扩展后,第二行为:
int * p1,p2; //这样p1就是int的指针,而p2是int类型变量
本文探讨了C/C++中typedef与宏定义#define的区别。通过实例展示了typedef可以确保连续变量声明为同一类型,而#define则不能。此外,文章还指出,与宏定义相比,typedef无法通过其他类型说明符进行扩展。

被折叠的 条评论
为什么被折叠?



