【发布时间】:2012-09-14 01:16:33
【问题描述】:
我正在研究一个用于 ARM 低功耗设备的 C 应用程序,我首先有这段代码
struct state {
float position;
int dummy;
};
注意这个结构没有定义一个新类型,我也注意到在后面的代码中这个结构是这样使用的
struct state mystate;
这对我来说很奇怪,不方便,不灵活,并且有 1 个额外的无用关键字,我可以很容易地避免首先使用 typedef 作为结构。
这是一个对这个应用程序的业务逻辑至关重要的结构,在源代码中也被大量使用。
不将typedef 与最终用作类型的结构一起使用是有特殊原因的吗?
【问题讨论】:
-
这真的与电源甚至ARM无关。这是一个 C 语法约定。
-
好吧,如果输入
struct太麻烦,您仍然可以自己输入typedef。 -
Typedef 填充了命名空间。程序员有一个大约 7 个标识符的“心理命名空间”。关键字不算。对于人类读者,“struct”是一个 0 字节的标记。
-
我将 typedef 用于这样的结构,因为我认为这样的代码更具可读性。
-
首先,这是一个重复的问题。其次,这是一个宗教问题。那些说 struct 的 typedef 不好的人有非常强烈的解释,但解释不充分。如果您认为他们的解释站得住脚,但无论如何还是希望避免
struct噪音,那么使用 C++ 编写代码,这使得typedef(因此struct)变得多余。