其实一般情况下,这两种办法都能够达到预期的效果。
但是有时候要注意define宏的副作用,比如下面这种情况:
typedef unsigned int *uint; //这时候uint是一个指向unsigned int数据的指针类型,注意这里是指针类型了
#define uint unsigned int * //下文每出现uint的时候就用unsigned int * 来代替,这是这个语句的本质原理(该宏的作用)
又如有以下语句:
uint a, b ;
如果是用上述typedef语句,则这里a,b均是一个指针变量,这个指针指向unsigned int类型的数据,
而如果用的是define语句,则这里展开后变成:
unsigned int * a, b;
这里a是一个指针了, 而b是一个unsigned int类型的数据。
注意这些就基本差不多了。
详情请参考《C陷阱与缺陷》一书6.2章!