typedef和#define的区别?
发布网友
发布时间:2022-05-19 04:12
我来回答
共2个回答
热心网友
时间:2024-03-04 06:05
其实一般情况下,这两种办法都能够达到预期的效果。
但是有时候要注意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章!
祝你好运!
热心网友
时间:2024-03-04 06:05
如果在一个小程序里是没有区别的,都可以实现关键字的替换,但是在一个团队开发的时候,一般用TYPDEF,因为用了之后,你的队友可以用#ifndefXXX #defineXXX的形式来使用你所说的关键字替换。比较方便团队合作,这是程序编写规范的问题,不是语法问题。