typedef 是我永远无法回头的事情之一。本质上,它允许对 C 中的现有类型进行别名,并使代码更易于阅读和编写。
以下例为例
struct my_struct {
整数a;
字符b;
}
void init_my_struct(struct my_struct* s, int a, char b);
现在,我们使用 typedef 将 my_struct 别名为另一个值。
typedef 结构 my_struct {
整数a;
字符b;
} my_struct_t;
void init_my_struct(my_struct_t* s, int a, char b);
注意遵循代码是多么容易。您也可以省略 my_struct 的初始名称声明,但我个人更喜欢它,因为它为静态分析工具提供了有关结构的更多信息,而不仅仅是匿名结构。同样可以用于任何类型,甚至枚举。但是,我觉得 typedef 的最佳用途是给函数指针起别名。
typedef 枚举颜色 {
红色,
颜色_绿色,
颜色_蓝色
} color_t;
无效显示值(color_t显示颜色);
它们背后的语法令人困惑和奇怪,部分源于“声明反映使用”的概念,但仍然很奇怪。将这些庞然大物别名为更容易看到的东西总是受欢迎的。
typedef void (*ParseFunction)();