中易网

typedef和#define的区别?

答案:2  悬赏:70  
解决时间 2021-01-18 10:25
  • 提问者网友:椧運幽默
  • 2021-01-17 15:20
typedef和#define的区别?
最佳答案
  • 二级知识专家网友:woshuo
  • 2021-01-17 16:20
其实一般情况下,这两种办法都能够达到预期的效果。
但是有时候要注意define宏的副作用,比如下面这种情况:
typedefunsigned int*uint; //这时候uint是一个指向unsigned int数据的指针类型,注意这里是指针类型了
#define uint unsigned int *//下文每出现uint的时候就用unsigned int * 来代替,这是这个语句的本质原理(该宏的作用)

又如有以下语句:
uinta, b ;
如果是用上述typedef语句,则这里a,b均是一个指针变量,这个指针指向unsigned int类型的数据,
而如果用的是define语句,则这里展开后变成:
unsigned int * a, b;
这里a是一个指针了, 而b是一个unsignedint类型的数据。
注意这些就基本差不多了。
详情请参考《C陷阱与缺陷》一书6.2章!
祝你好运!
全部回答
  • 1楼网友:鱼忧
  • 2021-01-17 17:42
如果在一个小程序里是没有区别的,都可以实现关键字的替换,但是在一个团队开发的时候,一般用TYPDEF,因为用了之后,你的队友可以用#ifndefXXX#defineXXX的形式来使用你所说的关键字替换。比较方便团队合作,这是程序编写规范的问题,不是语法问题。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息