typedef struct和enum,为什么?

时间:2011-02-28 20:58:20

标签: c++ enums struct

  

可能重复:
  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 };

我总是使用后者,这是我第一次看到前者。所以问题是为什么一个人使用一种风格而不是另一种风格。有什么好处?它们在功能上是否相同?我相信他们不是百分百确定。

2 个答案:

答案 0 :(得分:9)

在C ++中,这无关紧要。

在C中,struct s,enumunion位于不同的“名称空间”中,这意味着它们的名称可能与变量名称冲突。如果你说

struct S { };

所以你可以说像

struct S S;

这意味着struct S是数据类型,S是变量名称。你不能说

S myStruct;
如果Sstruct(而不是类型名称),则在C中

,因此人们只是使用typedef来避免一直说struct

答案 1 :(得分:3)

它们适用于C兼容性。正常

  struct Bar { blah, blah };

与C无关;