1.在我的大学课本里,对typedef的定义是给已有的类型起个别名,或者定义新的类型。

比如下面:

typedef struct AF_ScriptClassRec_ const* AF_ScriptClass;

typedef struct AF_ScriptMetricsRec_
{
AF_ScriptClass clazz;
AF_ScalerRec scaler;
FT_Bool digits_have_same_width;

} AF_ScriptMetricsRec, *AF_ScriptMetrics;


上面定义了三种类型:

1>>AF_ScriptMetricsRec是结构体,是struct AF_ScriptMetricsRec_的简写.或者别名吧

如 struct AF_ScriptMetricsRec_ af 就等同于 AF_ScriptMetricsRec af

2>>AF_ScriptMetrics是结构体的指针

如 AF_ScriptMetrics paf = ⁡

3>>AF_ScriptClass也是一个结构体指针,不过它要求的是指向const类型的结构体变量,非const也可以。加这个const意在说明不能通过这个指针修改它所指向的变量.是不是const无所谓.

如 const AF_ScriptMetricsRec af;

AF_ScriptClass paf = ⁡

2.typedef 也可以定义函数指针

typedef void

(*AF_Script_ScaleMetricsFunc)( AF_ScriptMetrics metrics, AF_Scaler scaler );

AF_Script_ScaleMetricsFunc是指向返回值未void带两个参数的函数。其初始化时赋给一个匹配的函数名字就可以了。

3.typedef 也可以用在枚举上