加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_汕头站长网 (https://www.0754zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

typedef 和 #define 的差异

发布时间:2022-12-07 11:15:26 所属栏目:语言 来源:
导读:  typedef 在表现上有时候类似于 #define,但它和宏替换之间存在一个关键性的区别。正确思考这个问题的方法就是把 typedef 看成一种彻底的“封装”类型,声明之后不能再往里面增加别的东西。

  1)
  typedef 在表现上有时候类似于 #define,但它和宏替换之间存在一个关键性的区别。正确思考这个问题的方法就是把 typedef 看成一种彻底的“封装”类型,声明之后不能再往里面增加别的东西。
 
  1) 可以使用其他类型说明符对宏类型名进行扩展,但对 typedef 所定义的类型名却不能这样做。如下所示:
  #define INTERGE int
  unsigned INTERGE n;  //没问题
 
  typedef int INTERGE;
  unsigned INTERGE n;  //错误,不能在 INTERGE 前面添加 unsigned
 
 
  2) 在连续定义几个变量的时候,typedef 能够保证定义的所有变量均为同一类型,而 #define 则无法保证。例如:
  #define PTR_INT int *
  PTR_INT p1, p2;
 
  经过宏替换以后,第二行变为:
  int *p1, p2;
 
  这使得 p1、p2 成为不同的类型:p1 是指向 int 类型的指针,p2 是 int 类型。
 
  相反,在下面的代码中:
  typedef int * PTR_INT
  PTR_INT p1, p2;
 
  p1、p2 类型相同,它们都是指向 int 类型的指针。
 

(编辑:云计算网_汕头站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!