Bezeichner bei typedef struct
-
Hallöchen,
ich erweitere gerade meine C-Kenntnisse etwas und würde gerne wissen ob es einen signifikanten Unterschied zwischen diesen beiden Deklarationen von Strukturen gibt? Beide funktionieren ja, gibt es einen Grund eine Methode vorzuziehen?
// typ 1 typedef struct Bezeichner_ { int var; }Bezeichner;
// typ 2 typedef struct { int var; }Bezeichner;
Gruß Chris
-
Beim Ersten kannst du sowohl
Bezeichner
als auchstruct Bezeichner_
verwenden. Beim Zweiten kannst du nurBezeichner
verwenden.// für Typ 1 struct Bezeichner_ foo; Bezeichner foo1; // für Typ 2 Bezeichner foo2;
-
Man muss die beiden Bezeichner nicht unterschiedlich wählen, denn
typedef struct foo { int val; } foo;
ist vollkommen legal.
Man kann also
struct foo
undfoo
verwenden wie monstermunchkin ja schon sagte. Ersteres ist dann interessant wenn man selbstreferenzierende Strukturen (z.B. Listen) baut.
Dann kann man das machen:typedef struct foo { int val; struct foo *next; } foo;
während:
typedef struct foo { int val; foo *next; } foo;
nicht gehen würde (man könnte das auch mit forward declaration lösen).
-
Danke euch beiden, durch die Nutzung für Listen etc. macht nun auch für mich die Typ1-Deklaration einen Sinn...