请教下,#define和typedef的区别

2020-01-25 15:37发布

怎么我感觉功能都差不多嘛,多数时候可以相互替代?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
takashiki
2020-01-26 12:17
#define就是双刃剑,用的好很锋利,用不好会伤到自己。
我一般的原则,能使用typedef的一律typedef。对enum、inline之类一律等同,坚决反对#define一切的风格。

区别代码1:
  1. typedef int* IntPtr;
  2. IntPtr a, b;         //b是int*类型

  3. #define IntPtr int*
  4. IntPtr a, b;         //b是int类型,与我们的意图相悖
复制代码区别代码2:
  1. typedef struct {
  2.     int a;
  3. } CMyType;
  4. CMyType a, b;

  5. #define CMyType struct { int a; }      //不好意思,从来没有见过谁这么用的
  6. CMyType a, b;                               //a, b的类型都不兼容了……
复制代码

一周热门 更多>