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;
    } meinestruktur
    

    wo 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.


Anmelden zum Antworten