Anonyme Structs
-
danke für die info.
Warum das nicht legal sein sollte, nun warum ist das nicht legal?union { struct { double x; double y; double z; }; /* ... */ }
-
weil da ein sinnloser Typ in der Landschaft steht.
union { int; } foo;
ist ja auch nicht legal
-
int main() { union point { struct { int x; int y; }; int coords[2]; }; }
der gcc 3.2 kompiliert das ohne Warnung!
-
mit -ansi -pedantic
lars.c:11: warning: ISO C doesn't support unnamed structs/unions
-
Original erstellt von Bashar:
mit -ansi -pedantic
lars.c:11: warning: ISO C doesn't support unnamed structs/unionsschon klar das das nicht standard konform ist aber ich wollt dir den sinn zeigen!
-
*mööp*
[ Dieser Beitrag wurde am 27.04.2003 um 21:33 Uhr von Bashar editiert. ]
-
Hmm, wo ist der Sinn denn? Das Beispiel ist doch "äquivalent" zu
int main() { union point { int coords[2]; }; }
oder seh ich da was falsch? Oder wie willst Du auf x und y zugreifen?
-
union point p; ... p.x ändert auch p.coord[0] p.y ändert auch p.coord[1]
-
ist aber ein ziemliches spiel mit dem feuer... ich hab ja keine garantie das die variablen in der struct gleich im speicher liegen wie dei im array ... oder?
-
jup, ist undefiniert.
-
wieso sollte das undefiniert sein?
Ich denke die Reihenfolge ist das Hauptproblem und Padding Bytes.
Maybe undefiniert aber bestimmt high portabel.[ Dieser Beitrag wurde am 27.04.2003 um 22:52 Uhr von Lars editiert. ]
-
naja genau wegen z.b. den padding bytes... wenn man dann nur so nen abgechacken integer + noch ein par padding bytes bekommt ist das ziemlich undefiniert