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
Bezeichnerals auchstruct Bezeichner_verwenden. Beim Zweiten kannst du nurBezeichnerverwenden.// 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 fooundfooverwenden 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...