-
基本概念
#define 只是在预处理过程对代码进行简单的替换。
typedef 只对已有的类型进行别名定义,不产生新的类型;其英文的解释
Typedef does not work like typedef [type] [new name]. The [new name] part does not always come at the end
总结一下就是: 任何声明变量的语句前面加上typedef之后,原来是变量的都变成一种类型。不管这个声明中的标识符号出现在中间还是最后.
-
基本用法
//最基本的 typedef [type] [new name]
//int
typedef int INT;
INT a; //a是int类型
//结构体
typedef struct
{
int a;
int b;
} MyStruct;
MyStruct s_data;
//高级一点的 typedef
//指针
typedef int *p;//定义了一个名为p的指针类型, 它指向int
//数组
typedef int INT[3];
INT a;
cout<<typeid(a).name()<<endl; //输出的是 int[3]
//函数
typedef void (*pfun)(void); // pfun 类型是 void(*)(void)
pfun myFun; // 定义一个函数:void (*myFun)(void);
typedef int g(int); // 定义一个名为g, 含一个int参数, 返回值为int行的函数类型