首页 > 其他 > 详细

#define与typedef定义的类型名的区别

时间:2015-05-27 06:16:09      阅读:239      评论:0      收藏:0      [点我收藏+]

1、可以用其他类型说明符对#define定义的类型名进行扩展,但对typedef所定义的类型名不能这样做。

  例如:

  #define peach int

  unsigned peach i;  //加上unsigned类型说明符,正确!

  typedef int banana;

  unsigned banana i;  //加上unsigned类型说明符,错误!

 

2、在连续的变量声明中,用typedef定义的类型能够保证声明中的所有变量均为同一种类型,而用#define定义的类型则无法保证。

  例如:

  #define int_ptr int *

  int_ptr chalk,cheese;

  经过宏扩展,第二行变为:

  int * chalk,cheese;

  这使得chalk和cheese成为不同的类型:chalk是一个指向int的指针,而cheese则是一个int。

  相反,下面的代码中:

  typedef char * char_ptr;

  char_ptr Bentley,Rolls_Royce;

  Bentley和Rolls_Royce的类型依然相同。虽然前面的类型名变了,但他们的类型相同,都是指向char的指针。

 

 

                                                ——摘自《C专家编程》

#define与typedef定义的类型名的区别

原文:http://www.cnblogs.com/lanyuan114489/p/4532247.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!