请教下,#define和typedef的区别

2020-01-25 15:37发布

怎么我感觉功能都差不多嘛,多数时候可以相互替代?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
takashiki
1楼-- · 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的类型都不兼容了……
复制代码
滴答滴答下雨啦
2楼-- · 2020-01-26 16:05
 精彩回答 2  元偷偷看……
磊磊映画
3楼-- · 2020-01-26 17:54
基本上是没有什么区别的
都是预处理指令
#define 是替代指令,用字母代替常量
#typedf 不仅是替代指令,而且可以限制常量的类型
yangbing2020
4楼-- · 2020-01-26 23:15
楼主的问题,俺也一直有同样的疑问~哈哈
锋仔_up
5楼-- · 2020-01-27 03:45
学习课~~  
zy0818
6楼-- · 2020-01-27 07:17
楼主问的好,我也学习了~~

一周热门 更多>