#include <stdio.h>
#define peach int
typedef int banana;

int main(void){
unsigned peach a;
unsigned banana b;
return 0;
}


 

上面的代码中,

 

unsigned banana b;


该行编译会出现错误。

 

因为typedef是一种彻底的“封装”类型,而#define只是简单的文本替换。


再看,

 

#include <stdio.h>
#define peach char*
typedef char* banana;

int main(void){
peach a,b;
banana c,d;
printf("sizeof(a)=%d\n",sizeof(a));
printf("sizeof(b)=%d\n",sizeof(b));
printf("sizeof(c)=%d\n",sizeof(c));
printf("sizeof(d)=%d\n",sizeof(d));
return 0;
}


运行结果为:

 

sizeof(a)=4

sizeof(b)=1

sizeof(c)=4

sizeof(d)=4