typedef 的使用

typedef, 提供类型别名
格式: typedef 类型 定义名
例:   typedef int* pInt
1. 主要用途
   为类型提供别名,简化代码,提高可读性
   可以为普通类型,结构,枚举,联合,类,函数指针等提供别名。

2. 关于函数指针的typedef
   from msdn:
 typedef void fv( int ), (*pfv)( int );  /* typedef declarations */

 void ( *signal( int, void (*) (int)) ) ( int );
 fv *signal( int, fv * );   /* Uses typedef type */
 pfv signal( int, pfv );    /* Uses typedef type */
  
    简单例子:
     typedef void (*PF)(int);
     PF foo;   // == void (*foo)(int)

      typedef 用于函数指针的时候形式比较特殊,因为类型和定义名是混在一起的,形式上没有各自分离。
 在这个例子中,类型就是 void (* )(int),定义名就是PF,所以PF foo == void (*foo) (int)。

3. 注意事项
   1)修饰符
      定义名前面可以加修饰符,包括const, voilate.
      如: typedef char* pChar;
           const pChar cp; // == const char* cp;
   2)作用域
      from msdn:
 typedef char FlagType; // FlagType 是类型名称,相当于char
       
        int g()
 {
     int FlagType;      //FlagType 是变量名,类型是int
 }

 这种用法是合法的,但是不好(比较bt的用法了,除非程序员故意恶心看程序的人,呵呵)。

你可能感兴趣的:(typedef 的使用)