Posted on 2009-09-22 13:44
宋乃亮 阅读(294)
评论(0) 编辑 收藏 引用
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的用法了,除非程序员故意恶心看程序的人,呵呵)。