Was mache ich mit dem Befehl typedef struct F G;
-
Was ein struct ist, ist mir bekannt
Aber was mache ich mit dem Befehltypedef struct F G; //??? //... struct F { int x,y,z; };
----------------------
2.te Frage:
Was ist:void(*Q)();
wenn Q eine Funktion ist? Ist das ein Pointer auf eine Funktion?
-
Erste Frage: typedef erzeugt ein Typ-Synonym.
typedef int zahl; zahl a = 42;
Das geht natürlich für alle Typen. Die Syntax ist die gleiche wie für eine Variable, nur dass eben noch typedef davor steht. z.B. ist p hier:
typedef int (*p)[10];
ein Synonym für "Zeiger auf Array der Länge 10, das int enthält".
2. Frage: Das ist eine Deklaration, Q sollte also möglichst nicht schon als Funktion deklariert sein
Es deklariert einen Zeiger auf eine Funktion mit unbestimmt vielen Argumenten und dem Rückgabetyp void. Die kannst du dann mit Q() aufrufen.
-
Danke für die treffliche Antwort!
Was wird jetzt hier nochmal als Typ-Synonym verwendet
typedef struct F G;
Ist F jetzt nun ein struct und G eine Instanz davon oder wie war das?
-
betrachte es erstmal so:
struct F G;
Es wird eine Variable G vom Typ struct F angelegt. Jetzt schreibst du typedef davor:
typedef struct F G;
Jetzt ist G keine Variable vom Typ struct F mehr, sondern ein Synonym für struct F.