C++ 中typedef用法
程序员文章站
2024-03-23 13:55:10
...
typedef用于定义类型别名,而不是简单的宏替换。
1.用于大量指针定义。
typedef char* PCHAR; // 一般用大写
PCHAR pa, pb; // 声明两个指向字符变量的指针
char *pa, *pb;//等同
2.用于结构体声明和调用。
struct tagPOINT1
{
int x;
int y;
};
struct tagPOINT1 p1;
typedef struct tagPOINT
{
int x;
int y;
}POINT;
POINT p1; // 这样就比原来的方式少写了一个struct,比较省事,尤其在大量使用的时候
3.用于与平台无关类型的定义。
比如定义一个叫 REAL 的浮点类型,在目标平台一上,让它表示最高精度的类型为:
typedef long double REAL;
在不支持 long double 的平台二上,改为:
typedef double REAL;
在连 double 都不支持的平台三上,改为:
typedef float REAL;
也就是说,当跨平台时,只要改下 typedef 本身就行,不用对其他源码做任何修改。
4.用于为复杂的声明定义一个简单的别名。
原声明:doube(*)() (*e)[9];
变量名为e,先替换左边部分,pFuny为别名一:
typedef double(*pFuny)();
再替换右边的变量e,pFunParamy为别名二
typedef pFuny (*pFunParamy)[9];
原声明的最简化版:
pFunParamy e;
与define的区别:在有指针的场合
typedef char *pStr1;
#define pStr2 char *;
pStr1 s1, s2;
pStr2 s3, s4;//s1、s2、s3都被定义为char *,而s4则定义成了char
参考资料:https://blog.csdn.net/ameyume/article/details/6326278
上一篇: typedef介绍