可能重复:
Purpose of struct, typedef struct, in C++
typedef struct vs struct definitions
在我维护的代码中,我经常看到以下内容:
typedef enum { blah, blah } Foo;
typedef struct { blah blah } Bar;
而不是:
enum Foo { blah, blah };
struct Bar { blah blah };
我总是使用后者,这是我第一次看到前者。所以问题是为什么一个人使用一种风格而不是另一种风格。有什么好处?它们在功能上是否相同?我相信他们不是百分百确定。
答案 0 :(得分:9)
在C ++中,这无关紧要。
在C中,struct
s,enum
和union
位于不同的“名称空间”中,这意味着它们的名称可能与变量名称冲突。如果你说
struct S { };
所以你可以说像
struct S S;
这意味着struct S
是数据类型,S
是变量名称。你不能说
S myStruct;
如果S
是struct
(而不是类型名称),则在C中,因此人们只是使用typedef
来避免一直说struct
。
答案 1 :(得分:3)
它们适用于C兼容性。正常
struct Bar { blah, blah };
与C无关;