可以看一下如下的例子
#define peach int
unsigned peach i; /*这样是没问题的*/
typedef int banana;
unsigned banana i; /* 错误!非法*/
在连续几个变量的声明中,用typedef定义的类型能够保证声明中所有的变量均为同一种类型,而#define则不然,在如下这种情况下:
#deinfe int_ptr, int *;
int_ptr chalk, cheese;
经过宏扩展,第二行变为:
int *chalk, cheese;
这样一来,chalk 与 cheese 就不是同一类型了,事与愿违
————————————————————————————————————————————————
而用 typedef 则就可以,如下:
typedef char * char_ptr;
char_ptr Bentley, Rolls_Royce;
这时 Bentley 与 Rolls_Royce类型是完全一样的

本文通过具体的代码示例,展示了在C语言中使用宏定义与类型定义(typedef)的不同效果,尤其是在指针类型声明方面的差异。

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



