第一、四个用途
用途一:
定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:
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;
POINT p1; // 这样就比原来的方式少写了一个struct,比较省事,尤其在大量使用的时候
或许,在C++中,typedef的这种用途二不是很大,但是理解了它,对掌握以前的旧代码还是有帮助的,毕竟我们在项目中有可能会遇到较早些年代遗留下来的代码。
用途三:
用typedef来定义与平台无关的类型。
比如定义一个叫 REAL 的浮点类型,在目标平台一上,让它表示最高精度的类型为y_2J#rb<3b(е/屔е/2X屔е/v3r'
<<{fz/n3_B3
rG^(GfvBfjZrnń(Aе/b;Az/2J#jB3\r'z/j>V>+z/jzs"_?jb8b>"[ń(Aе/j>VbAz/jn{Sn{~Cjrv 7#&7Σ3jB7_n3kFv"GzsRGb{:b;jń(Iе/r'/FcBb?tRj&vjg;fbg3b7&3b72ZGj>^ńq=,'gjB\t#>屔е/屔е/jZr'B3:>j(е/屔е/J3c
R\屔е/bbr'
+<х0c
R_bЁ7jc
&ň>br>z"Cb;r/v'z/j>c?b;v"fbń(ЁMQ}
=U9QHRgе/Gk^c7b;r'kc
R_n>66c
R_jb;[c
R\(е/屔е/>D屔е/r'>[7jRPbkr^jz,/>k>I0j
,nr>:cjń(I0е/R2jrr/vvń(I0е/R2jrr/vń(ЁI0е/RCkRr?7>GI0z/jR/RRbrrkVkj>c*3kgjvGv*{:bB\rv"oj>^z,ńИɑJ0bjXJ0j^?VBjv[/ń}J0}(е/ń輽噥噥(((
]=I1




