typedef用法小结(转载)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:24   2075   0
  typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。

第一、四个用途

用途一:

定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:
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 的浮点类型,在目标平台一上,让它表示最高精度的类型为&#xy_2J#rb<3b(е/屔е/2X屔е/v3r' <<{fz/n3_ B3 rG^(GfvBfjZrn ń(Aе/b;Az/2J#jB3\r'z/j> V>+z/j zs"_?jb8b>"[ń(Aе/j> VbAz/jn{Sn{~Cjrv7#&7Σ3jB7_n3 kF v"G zsRGb {:b;jń(Iе/r'/FcBb?tRj&vjg;f bg3b7& 3b7 2ZGj>^ń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/ RRbr rkVkj>c*3kgjvGv*{: bB\rv"oj>^z,ńИɑJ0bj XJ0j^?VBjv[/ń}J0}(е/ń輽噥噥((( ]=I1

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP