码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-27 06:16:12      阅读:87      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!