您的位置:首页 > 其它

typedef和#define的区别

2016-08-15 16:05 316 查看
其实一般情况下,这两种办法都能够达到预期的效果。
但是有时候要注意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章!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: