寻找方向程序猿、攻城狮
分类:
2011-10-23 22:25:24
#define定义一个类型的别名,只是简单的文本替换,在预编译的时候将会被替换为本来面目;而typedef可以看做是一种彻底的封装类型,封装后的类型不能再加上其它限定符加以修饰,但#define却可以。如:
#define it_is_a_type int
unsigned it_is_a_type i; /*这样子是合法的*/
typedef int it_is_a_type
unsigned it_is_a_type i;/*这样子是非法的*/
#define和typedef另外一处不同的地方是,使用#define定义的类型有可能不能跟多个变量,而typedef能够保证类型别名之后跟多个变量。如:
#define it_is_a_pointer int*
it_is_a_pointer i,j,k; 预编译处理后,就变成:int* i,j,k;只有第一个是指针,其它都是int类型的数值,这与程序设计者的初衷是违背的。但typedef不会。
typedef int* it_is_a_pointer
it_is_a_pointer i,j,k; i,j和k都是int*类型的变量。