用途一:
定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。
用途二:
用在旧的C的代码中(具体多旧没有查),帮助struct。
用途三:
用typedef来定义与平台无关的类型。
用途四:
为复杂的声明定义一个新的简单的别名。
---------------------------------
1.用的最多的是结构的定义:
typedef struct mySTRUCT_TEST_S{ int x, int y, }STRUCT_TEST_S;
再定义时候直接使用 STRUCT_TEST_S即可。
2.再就是在C指针那一章节中提到,可以在声明复杂指针时候使用,阅读起来更容易。
----------------------------------
转载:
陷阱一:
记住,typedef是定义了一种类型的新别名,不同于宏,它不是简单的字符串替换。比如:
先定义:
typedef char* PSTR;
然后:
int mystrcmp(const PSTR, const PSTR);
const PSTR实际上相当于const char*吗?不是的,它实际上相当于char* const。
原因在于const给予了整个指针本身以常量性,也就是形成了常量指针char* const。
简单来说,记住当const和typedef一起出现时,typedef不会是简单的字符串替换就行。
陷阱二:
typedef在语法上是一个存储类的关键字(如auto、extern、mutable、static、register等一样),虽然它并不真正影响对象的存储特性,如:
typedef static int INT2; //不可行
编译将失败,会提示“指定了一个以上的存储类”。