
typedef 关键字是“类型定义”的缩写,是用来定义一个别名的,语法是
(函数指针的 typedef 比较特别,不符合上面的形式)
比如你有一个“链表节点”结构体,其中的元素为 int 类型,你当然可以这么写:
但是,想一下,现在你写了一大堆操作链表的函数,比如:
这个时候你可能遇到两个问题:
使用 typedef,contains 就可以这么写:
除了上面提到的两点之外,typedef 还能起到简化的作用。比如你有一个函数:
定义一个指向它的函数指针,直接写会比较麻烦(如果你频繁地运用函数指针,显然会更加麻烦):
使用 typedef:
以后再使用指向 f 的函数指针,就可以直接:
总结一下,使用 typedef 能让你的代码更加便于修改、容易理解,并且能够起到简化的作用(通常,也会同时使代码更容易理解)。
C 标准库和 Linux 系统调用中就大量使用了 typedef 关键字,比如保存文件信息的结构体 stat:
标准库的 fsetpos 函数使用结构体 fpos_t,它是在 POSIX 标准中定义的。印象里这个结构体在 Linux 中实际上只有一个 int 字段,但是为了跨平台才使用了这样一个结构体(粗略看过 fsetpos 的手册,记忆的可能不是特别准确)。
还有 Linux 信号处理的 handler、线程库中初始化线程时关联的函数都是借助于函数指针实现的。
