6

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

In code that I am maintaining 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.

Community
  • 1
  • 1
anio
  • 8,903
  • 7
  • 35
  • 53

2 Answers2

10

In C++ this doesn't matter.

In C, structs, enums, and unions 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.

user541686
  • 205,094
  • 128
  • 528
  • 886
3

They are for C compatability. A normal

  struct Bar { blah, blah };

doesn't work the same with C;

Nick Banks
  • 4,298
  • 5
  • 39
  • 65