#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