Unterschied typedef struct / struct

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Unterschied typedef struct / struct

Beitrag von cloidnerux » Do Mär 12, 2009 7:07 pm

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;
};
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Unterschied typedef struct / struct

Beitrag von fat-lobyte » Do Mär 12, 2009 9:16 pm

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
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Unterschied typedef struct / struct

Beitrag von cloidnerux » Fr Mär 13, 2009 4:54 pm

OK, danke, das wollte ich nur Wissen.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten