typedef与#define 的区别
typedef 与宏文本替换之间存在一个关键性的区别,typedef可以看做事一种彻底的"封装"类型,在声明它之后不能再往里面增加别的东西。
例如
#define peach int
unsigned peach i;//没问题
typedef int banana ;
unsigned banana i;/*错误,非法*/
其次,在连续几个变量的声明中,用typedef 定义的类型能够保证声明中所有的变量 均为同一种类型,而用#define 定义的类型则无法保证。
#define int_ptr int *
int_ptr chalk,cheese;
宏扩展之后,实际声明为:
int *chalk,cheese;
cheese 的类型为int ,这和 我们起初的预期不一样。
而typedef int * int_ptr ;
int_ptr chalk,cheese;
此时 ,chalk和cheese的类型依然相同,都是指向int 的指针.

浙公网安备 33010602011771号