typedef与define的区别 (1)#define之后不带分号,typedef之后带分号。 (2)#define可以使用其他类型说明符对宏类型名进行扩展,而 typedef 不能这样做。如: #define INT1 int
unsigned INT1 n; //没问题
typedef int INT2;
unsigned INT2 n; //有问题
INT1可以使用类型说明符unsigned进行扩展,而INT2不能使用unsigned进行扩展。 (3)在连续定义几个变量的时候,typedef 能够保证定义的所有变量均为同一类型,而 #define 则无法保证。如: #define PINT1 int*;
P_INT1 p1,p2; //即int *p1,p2;
typedet int* PINT2;
P_INT2 p1,p2; //p1、p2 类型相同
PINT1定义的p1与p2类型不同,即p1为指向整形的指针变量,p2为整形变量;PINT2定义的p1与p2类型相同,即都是指向 int 类型的指针。
|