关于c ++:typedef struct和enum,为什么?

typedef struct and enum, why?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
Purpose of struct, typedef struct, in C++
typedef struct vs struct definitions

在我维护的代码中,我经常看到以下内容:

1
2
typedef enum { blah, blah } Foo;
typedef struct { blah blah } Bar;

而不是:

1
2
enum Foo { blah, blah };
struct Bar { blah blah };

我总是使用后者,这是我第一次看到前者。所以问题是,为什么一种样式会比另一种样式使用。有什么好处吗?它们的功能是否相同?我相信他们是,但不是100%确定。


在C++中,这并不重要。

在C语言中,structs、enums和unions位于不同的"名称空间",这意味着它们的名称可能与变量名称冲突。如果你说

1
struct S { };

所以你可以说

1
struct S S;

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

1
S myStruct;

在C语言中,如果Sstruct而不是类型名,那么人们只是使用typedef来避免一直说struct


它们是为了C兼容。正常的

1
  struct Bar { blah, blah };

与C不一样;