using typedef to curb miscreant code
用typedef定义新类型别名的方法:
-
先按定义变量的方法写出定义体
-
将变量名换成别名
-
在最前面加上typedef
-
最后可以用别名来进行变量的定义
For example:
简单变量而言:
- int i;
- int Interger;
- typedef int Interger;
- Interger index;
对数组而言:
- char str[80];
- char Cstr[80];
- typedef char Cstr[80];
- Cstr line;
对指针而言:
- char *p;
- char *pstr;
- typedef char * pstr;
- pstr s,p[10];
对函数指针而言:
- int add(int,int);
- int (*pFunc)(int,int)
- typedef int (*pFunc)(int,int)
- pFunc=add;
typedef与define的区别
可见,typedef与#define有相似之处,而事实上,#define是在预处理阶段处理的,它只能做简单的字符串替换;
而typedef是在编译阶段处理的。
typedef注意事项
1. typedef char *pstr;
而const pstr会被编译器解释为char * const
所以,若要想解释成const char *可这样——typedef const char * cpstr;
2. typedef与storage class specifier(存储类关键字)
typedef本身就是存储类关键字,所以typedef register int Register是定义是错的,因为不能同时又多个存储类关键字