Catonga
16-04-2003, 04:17
Hallo, ich habe hier folgenden Code:
typedef struct data
{
int x, y;
char a, b;
} data_t, *data_p;
static data_t test[10];
Die Frage ist jetzt, was passiert hier jetzt denn eigentlich genau?
Wenn man das "typedef" mal entfernt,
dann wird hier wohl ein Struct mit dem Typnamen data deklariert
und dann eine Variable Namens "data_t" und ein Zeiger Namens"data_p" vom (Struct-) Typ data definiert.
Das Problem das mir hier nicht ganz klar ist ist das typedef.
Bei typedef bekommt ein Datentyp ja einen neuen Namen, z.b.
typedef int superint;
Wenn data_t aber eine Variable ist und kein Typ,
wieso funktioniert dann typdef?
Hier wird das also doppelt belegt,
also wird es zum einen eine normale Variabel (wegen Struct) und
zum anderen ein Typ vom Typ Struct oder wie soll man das
interpretieren?
Doppelt gemoppelt?
Und wenn man die Zeile weiter unten anschaut,
dann wird data_t als Datentyp verwendet und nicht als Variable
um dieses Array names test zu generieren:
static data_t test[10];
Weil eine Variable kann das ja in diesem Fall nicht sein.
Dieser Code läßt sich zumindest compilieren und der letzten Zeile
zufolge müßte data_t offentsichtlich ein Datentyp sein und keine Variable.
Daher die Frage, hat hier typdef vor der Variablendefinition Priorität
oder ist data_t sowohl ein Datentyp als auch eine Variable vom Typ Struct data? :confused:
Wenn ich mir aber den Zeiger am Schluß anschaue, dann müßte hier
dieses Struct immer noch in der Lage sein zu wirken um diesen Zeiger vom Typ Struct
data zu erstellen.
Wie soll man das denn jetzt verstehen?
typedef struct data
{
int x, y;
char a, b;
} data_t, *data_p;
static data_t test[10];
Die Frage ist jetzt, was passiert hier jetzt denn eigentlich genau?
Wenn man das "typedef" mal entfernt,
dann wird hier wohl ein Struct mit dem Typnamen data deklariert
und dann eine Variable Namens "data_t" und ein Zeiger Namens"data_p" vom (Struct-) Typ data definiert.
Das Problem das mir hier nicht ganz klar ist ist das typedef.
Bei typedef bekommt ein Datentyp ja einen neuen Namen, z.b.
typedef int superint;
Wenn data_t aber eine Variable ist und kein Typ,
wieso funktioniert dann typdef?
Hier wird das also doppelt belegt,
also wird es zum einen eine normale Variabel (wegen Struct) und
zum anderen ein Typ vom Typ Struct oder wie soll man das
interpretieren?
Doppelt gemoppelt?
Und wenn man die Zeile weiter unten anschaut,
dann wird data_t als Datentyp verwendet und nicht als Variable
um dieses Array names test zu generieren:
static data_t test[10];
Weil eine Variable kann das ja in diesem Fall nicht sein.
Dieser Code läßt sich zumindest compilieren und der letzten Zeile
zufolge müßte data_t offentsichtlich ein Datentyp sein und keine Variable.
Daher die Frage, hat hier typdef vor der Variablendefinition Priorität
oder ist data_t sowohl ein Datentyp als auch eine Variable vom Typ Struct data? :confused:
Wenn ich mir aber den Zeiger am Schluß anschaue, dann müßte hier
dieses Struct immer noch in der Lage sein zu wirken um diesen Zeiger vom Typ Struct
data zu erstellen.
Wie soll man das denn jetzt verstehen?