typedef struct and enum, why? [duplicate]
Possible Duplicates:
Purpose of struct, typedef struct, in C++ typedef struct vs struct definitions
In code that I am mai开发者_JAVA技巧ntaining I often see the following:
typedef enum { blah, blah } Foo;
typedef struct { blah blah } Bar;
Instead of:
enum Foo { blah, blah };
struct Bar { blah blah };
I always use the latter, and this is the first time I am seeing the former. So the question is why would one use one style over the other. Any benefits? Also are they functionally identical? I believe they are but am not 100% sure.
In C++ this doesn't matter.
In C, struct
s, enum
s, and union
s were in a different "namespace", meaning that their names could conflict with variable names. If you say
struct S { };
So you could say something like
struct S S;
and that would mean that struct S
is the data type, and S
is the variable name. You couldn't say
S myStruct;
in C if S
was a struct
(and not a type name), so people just used typedef
to avoid saying struct
all the time.
They are for C compatability. A normal
struct Bar { blah, blah };
doesn't work the same with C;
精彩评论