Hallo Besucher, der Thread wurde 1,4k mal aufgerufen und enthält 3 Antworten

letzter Beitrag von spider-j am

[C] Frage zur Form von typedef struct

  • Folgendes Beispiel:

    Code
    1. typedef struct NAME1 {
    2. int hassenichgesehen ;
    3. char buchstabe ;
    4. } NAME2 ;


    Wozu sind jetzt genau diese zwei Labels NAME1 und NAME2 gut? Also lässt man NAME2 weg, kann man per "struct NAME1 Variable" zwar eine Variable mit der Struktur anlegen, gcc gibt allerdings eine Warning aus. Nimmt man NAME2 hinzu bleibt, kommt keine Warning und Variablendeklaration geht genau so.
    Dann widerrum hab ich einige Beispiele hier, wo NAME1 fehlt und nur NAME2 angegeben ist. Warum?!?

  • Der Typ 'struct NAME1 { ... }' wird bei dir als 'NAME2' definiert.


    Somit kannst du einfach schreiben:


    Code
    1. NAME2 a;
    2. a.hassenichgesehen = 3;
    3. a.buchstabe = 'b';


    Würdest du struct NAME1 nicht typedeffen, müsstest du schreiben:


    Code
    1. struct NAME1 a; // das struct muss dann hierhin
    2. a.hassenichgesehen = 3;
    3. a.buchstabe = 'b';


    typedef struct wird also zu einer Art von Aliasing des Typs genutzt, so dass du nicht immer struct Typ schreiben musst, sondern lediglich Typ schreiben kannst.


    Unter C++ ist struct lediglich eine Klasse mit Methoden/Eigenschaften, die Public sind. Da brauchst du auf sowas nicht achten, da die struct äquivalent zur Klasse verwendet werden kann.