trap 1,define 与 typedef
define和typedef都可以定义或者说引入一种新的数据类型,比如:
typede unsigned char uint8;
#define uint8 unsingde char
然后程序都可以这样去声明一个变量:
uint8 x;
但是千万要记住,typedef和define这两种方式的关键性差别,即:define完全是宏替换,而typedef定义了一种类型的别称。用几个例子能更好的说明问题:
eg1:
#define int1 int
int1 x; //没有问题
unsigned int1 y; //也是没有问题的
typedef int int1;
int1 x; //同样没有问题
unsigned int1 y; //问题来了吧
eg2:
typedef int* pint;
pint px, py; //没有问题,px、py都是int*
#define pint int*
pint px,py; //问题来了,px是int*,但py不再是pint而被默认为是int了
可以看到两种方式都不可能导致巨大问题的trap,所以要小心行事,建议尽量合乎规范的使用typedef。