Seite 1 von 1

Unterschied typedef struct / struct

Verfasst: Do Mär 12, 2009 7:07 pm
von cloidnerux
Also ich hab jezt häufiger in Tutorials und Besipielen folgendes gelesen:

Code: Alles auswählen

typedef strcut name {
int i;
} struct_t;
Was ist daran besser/schlechter bzw. anderst als bei der mir besser vertrauten Methode über:

Code: Alles auswählen

struct name {
int i;
};

Re: Unterschied typedef struct / struct

Verfasst: Do Mär 12, 2009 9:16 pm
von fat-lobyte
Die Kurzfassung:
struct ist C++
typedef struct ist C

In C muss man Strukturvariablen gleich bei der Deklaration der Struktur definieren.

Code: Alles auswählen

struct 
{
   int a;
   int b;
} var1, var2; 
Dann ist der typ der Strukturvariablen allerdings "Weg", also du kannst ihn nicht mehr ansprechen (die Strukturvariablen und ihre Member aber schon!)
Wenn du dir das struct erhalten willst, musst du es in einem typedef einfangen:

Code: Alles auswählen

typedef struct
{
  int a;
  int b;
} A;

A c;
In C++ ist ein struct genau das gleiche wie eine Klasse (allerdings mit anderen default - zugriffsbeschränkungen).
Das heißt du kannst das Struct als Typ, und auch ohne Typedef deklarieren:

Code: Alles auswählen

struct A
{
  int a;
  int b;
};

A a;
Allerdings ist die C Syntax natürlich auch in C++ erlaubt.


So war es FRÜHER. HEUTE ist es vollkommen egal wie du structs deklarierst, soweit ich weiß darf man auch in C (nach C99) structs nach belieben deklarieren. Oder so ähnlich...
Kurz: Bleib für C bei typedef struct, und für C++ bei nur struct

Re: Unterschied typedef struct / struct

Verfasst: Fr Mär 13, 2009 4:54 pm
von cloidnerux
OK, danke, das wollte ich nur Wissen.