typedef struct ?
-
Ich habe mal wieder eine kurze Frage .
Hier der Code//C++ struct Adresse { int a; }adresse1 ,adresse2; //Deklaration zweier Variablen vom Typ Adresse Adresse aAdresse; //Deklaration in C++
//C struct Adresse { int a; }Variable1,Variable2; struct Adresse aAdresse; //Bei der Deklaration in C muss struct stehen
Den nächsten Abschnitt finde ich etwas verwirrend.
Hier sage ich ja das mein struct Adresse heißt , allerdings führt die selbe Anweisung in den vorherigen Code Beispielen dazu dass ich Variablen erzeuge .
Könnte mir jemand erklären was genau typedef hier tut ?typedef struct { int a; }Adresse;
-
Hier wird auf diese struct ohne Namen getypedeft mit dem Namen 'Adresse'
Das hat den Vorteil, dass man dann auch in C nur Adresse schreiben muss, und der Code zwischen C und C++ portierbar ist
-
In C++ ist
typedef struct { int a; }Adresse;
äquivalent zu
struct Adresse { int a; };
-
Ok ,das war mir schon klar . Aber ich finde die Syntax verwirrend :D.
Weil normalerweise wird typedef ja so verwendet .typedef int Ganzzahl;
Bezüglich eines Structs hatte ich das noch nie gesehen.
-
typedef verlangt als erstes argument was definiertes (oder was jetzt definiert wird) und als zweites argument den alias namen
-
Wie verarbeitet der Compiler denn diese Anweisung.
Oder von wem genau wird typedef verarbeitet ?typedef struct { int b ; }Adresse;
Adresse c; // == struct{int b;}c; ???
-
Vicious Falcon schrieb:
In C++ ist
typedef struct { int a; }Adresse;
äquivalent zu
struct Adresse { int a; };
Nein, ist es nicht. Das erste ist ein typedef auf einen anonymen Typen, das zweite ein benannter Typ. Der Unterschied liegt z.B.darin, dass man für das erste keine Vorwärtsdeklaration machen kann.
-
Und bei typeid() wird vermutlich auch was ganz anderes rauskommen.
-
Und die Deklaration "
struct Adresse adr;
" geht nicht.