为什么要在C语言中这么频繁地对结构进行typedef?
我看过很多程序,其中包括以下结构 typedef struct { int i; char k; } elem; elem user; 为什么经常需要它? 有任何特定原因或适用范围? #1楼 Linux内核编码样式 第5章给出了使用 typedef 优缺点(主要是缺点)。 请不要使用“ vps_t”之类的东西。 对结构和指针使用typedef是 错误的 。 当你看到一个 vps_t a; 在源代码中是什么意思? 相反,如果说 struct virtual_container *a; 您实际上可以说出“ a”是什么。 许多人认为typedef是“帮助可读性”。 不是这样 它们仅对以下有用: (a)完全不透明的对象(使用typedef主动 隐藏 该对象是什么)。 例如:“ pte_t”等不透明对象,您只能使用适当的访问器函数来访问。 注意! 不透明和“访问器功能”本身不好。 之所以将它们用于pte_t等之类,是因为那里确实存在绝对 零的 可访问信息。 (b)清除整数类型,其中抽象 有助于 避免混淆,无论是“ int”还是“ long”。 u8 / u16 / u32是完美的typedef,尽管它们比这里更适合(d)类。 注意! 再次-需要有一个 原因 。 如果某事是“无符号的长”,则没有理由这样做 typedef unsigned long myflags_t; 但是