typedef的四个用途和两大陷阱

2014-11-23 20:29:12 · 作者: · 浏览: 19

  用途一:


  定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:


  char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针,


  // 和一个字符变量;


  以下则可行:


  typedef char* PCHAR; // 一般用大写


  PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针


  虽然:


  char *pa, *pb;


  也可行,但相对来说没有用typedef的形式直观,尤其在需要大量指针的地方,typedef的方式更省事。


  用途二:


  用在旧的C的代码中(具体多旧没有查),帮助struct。以前的代码中,声明struct新对象时,必须要带上struct,即形式为: struct 结构名 对象名,如:


  struct tagPOINT1


  {


  int x;


  int y;


  };


  struct tagPOINT1 p1;


  而在C++中,则可以直接写:结构名 对象名,即:


  tagPOINT1 p1;


  估计某人觉得经常多写一个struct太麻烦了,于是就发明了:


  typedef struct tagPOINT


  {


  int x;


  int y;


  }POINT;