【发布时间】:2009-06-11 04:01:39
【问题描述】:
我正在使用这样的结构。我不喜欢 typedef,因为我告诉过它可以隐藏错误。 但是,我正在查看一些示例代码,并且看到了这样声明的结构。这是我声明它们的正常方式。
struct person
{
int age;
char name[32];
};
这样使用:
struct person person_a;
person_a.age = 20;
etc.
但是,我见过这样声明的结构:
struct
{
int age;
char name[32];
}person;
和
struct _person
{
int age;
char name[32];
}person;
所有这些不同的技术之间有什么区别,您将如何决定何时最好使用每种特定的技术。
非常感谢您的任何建议,
【问题讨论】:
-
我很想知道为什么 typedef 可以隐藏错误。我更喜欢 typedefs - 尤其是因为你不会遇到使用 'extern void func(struct something *xxx);' 的问题没有事先声明'struct something'。也就是说,'extern void func(something *xxx);'完全需要'something'的typedef才能编译。替代方案编译 - 但不符合您的预期(尽管总的来说,您会侥幸成功)。