typede与#define宏定义有些相似,但大有不同。
用途一:定义一种类型的别名,而不只是简单的利用#define进行宏替换。可以用作同时声明指针类型的多个对象。
比如:char* a,b;//这只能表示他声明了一个指向字符变量的指针,和一个字符变量
而通过使用typedef
typedf char* PCHAR;
PCHAR a,b;//表面了a,b都是指向字符变量的指针,从而避免了错误的发生
用途二:在C代码当中,帮助结构体struct。在声明struct新对象时,必须要带上struct,形式为struct结构名+对象名
struct library
{
int x;
int y;
};
struct library next;
而在运用了typedef在C++当中可以直接写结构名+对象名,即:library next;
用途三:用typedef来定义与平台无关的类型
比如定义一个叫price的浮点型,在第一个平台当中表示:
typedef long double price;
在不支持long double的第二个平台上,则改为:
typedef double price;
在不支持double的第三个平台上,改为:
typedef float price;
也就i是说跨平台时,只要改下typedef本身就行不需要对其他的代码源进行修改,这样可以为程序员省下不少的代码量
总结:
typedef比#define在有指针的代码当中要更适用
请看以下例子: