typedef 可以成为你的朋友


   typedef 定义了一种新的已知类型的组合. 主要用于复杂的声明强制类型转换中

   typedef 的定义规则如变量声明的规则一致.


   引用 Expert C Programming 中的一句话(中文版p.68):

   把 typedef 看成是一种彻底的 "封装" --- 在声明它之后就不能再往里面增加任何别的东西
typedef int banana;
unsigned banana i;
/* 错误! 非法 */



   在连续的几个声明中, 用 typedef 能够保证变量的类型一致:

typedef int *int_ptr;
int_ptr a, b;
/* a 和 b 都是指向 int 型的指针 */

然而相比较说, 使用宏就不能保证这种特性:

#define int_ptr int *
int_ptr a, b;
/* 不好! a 是 int *, b 是 int */



   将 typedef 用作复杂的强制类型转换:

typedef int (*fun)(void) ;

int Fun()
{
return 0 ;
}

int main (int argc, char **argv)
{
int *p ;

int (*x)(void) = (fun)p ; /* convenient */

return 0 ;
}
  



   不要
为了方便对结构使用 typedef, 因为那样会影响程序的清晰.

   最后总结一下 typedef 应该使用的情况:
   数组, 结构, 指针以及函数的组合类型.
   可以值类型.
   复杂的强制类型转换. 




posted @ 2011-07-19 21:29  walfud  阅读(153)  评论(0编辑  收藏  举报