【发布时间】:2009-11-15 14:49:46
【问题描述】:
我刚刚开始学习 C,具有专业的 Java 背景和一些(如果不是太多)C++ 知识,我很惊讶这在 C 中不起作用:
struct Point {
int x;
int y;
};
Point p;
p.x = 0;
p.y = 0;
看来我必须使用struct Point 作为类型或使用typedef 来声明p。此代码在 C99 中有效吗?还是这是“C++ 的东西”?
【问题讨论】:
-
将 p 声明为
struct Point p;。您可以使用 typedef,但我建议您练习将您的类型称为struct Point。 -
@PP 为什么?你眼中的typedef有什么问题?
-
@Grumdrig:我从不提倡通过 typedef 重新定义语言。它使代码维护和审查更加困难。如果某物是一个结构,就这么说。当然,在某些情况下,不同的 int 类型更适合用作 typedef。但我不相信对结构做同样的事情通常是一个很好的例子。同样,这是反 Google-Go 哲学,其中关键字被视为邪恶,而是使用大写来区分公共/私人功能;但我更喜欢明确。
-
@Grumdrig - 将 const 或 const 指针“修改器”添加到已经有 const 甚至只是一个指针的 typedef 是很痛苦的。
标签: c