typedef类似于宏文本替换,但是和宏文本替换还是有些稍许的差别
第一个就是define说明符可以对宏类型进行扩展,但是用typedef所定义的类型却不能进行扩展。
#define var1 int;
typedef int var2;
则:
unsigned var1 a; // 合法;
unsigned var2 b; // 不合法;
第二个就是在连续变量的定义中,typedef能够保证声明中所有的变量均为同一类型,而define则无法保证;
typedef int* ptr;
ptr a,b;
这里a,b均是指向int类型的指针,
#define ptr int*;
ptr a,b;
int *a,b; // 扩展后这个样子
这里a指向int类型的指针,b却是个int类型的变量;
第三个就是typedef和define声明中数据类型和替换数据类型在声明中 的位置不一样;