typdef struct oder struct
-
Hallo,
hab mal eine grundlegende frage zu strukturen.
ich habe gelernt das eine struktur so aufgebaut sein sollte:
struct meinestruktur { double test; }ich hab aber jetzt schon öfters gesehen das es so aufgebaut ist:
typedef struct { double test; } meinestrukturwo ist da der unterschied und was ist "richtiger" ?
Danke schonmal
-
An sich gibt es da nicht so einen großen Unterschied.Das zweite ist ein Rudiment aus C. Die obere Variante ist aus C++.Da du sicherlich C++ programmieren willst ist es schon angebrachter die obere Variante zu verwenden.Kannst ja mal nach POD´s Googlen.
-
Kleine Erklärung:
Beide Versionen funktionieren sowohl in C als auch in C++. Mit der ersten gibts allerdings in C den Nachteil, dass wann immer man ein benanntes struct als Typ benutzen will, das Schlüsselwort struct davor schreiben muss. In C++ ist das nicht mehr nötig, da reicht es, den Namen des struct (oder der Klasse) ohne das Schlüsselwort anzugeben. Um den Nachteil in C zu umgehen kann man ein typedef auf das struct anlegen und den Namen des typedef benutzen, ohne das nervige Schlüsselwort. Den Ansatz macht die zweite Methode: es wird ein anonymes struct definiert und im gleichen Zug ein typedef drauf angelegt. Sowas wirst du also vor allem in Headern sehen die sowohl für C als auch für C++ geeignet sein sollen. In C++ reicht die erste Version vollkommen und ist zudem übersichtlicher.