C++ 中typedef用法

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

猜你喜欢

转载自blog.csdn.net/weixin_42078760/article/details/80608149
今日推荐