typedef工具是一个高级数据特性,利用typedef可以为某一类型自定以名称。这方面与#define类似,但是两者有3处不同:
- 与#define不同,typedef创建的符号只受限于类型,不能用于值
- typedef由编译器解释,不是预处理器
- 在其受限范围内,typedef比#define更灵活
接下来介绍typedef的工作原理。假设要用BYTE表示1字节的数组。只需像定义个char类型变量一样定义BYTE,然后在定义前面加上关键字typedef即可:
typedef unsigned char BYTE
随后,便可使用BYTE来定义变量:
BYTE x,y[10],*z
该定义的作用于取决于typedef定义所在的位置。如果定义在函数中,就具有局部作用域,受限于定义所在的函数。如果定义在函数外面,就具有文件作用域。
通常,typedef定义中用大写字母表示被定义的名称,以提醒用户这个类型名实际上是一个符号缩写。当然,也可以用小写:
typedef unsigned char byte;
typedef中使用的名称遵循变量的命名规则。