Ich würde mich nicht auf das Alignment verlassen (ist auch der Grund für den Compiler-Bug).
Du solltest die Struktur als 'packed' deklarieren und die Zwischenräume durch die benötigte 'Ausrichtung' mit Variablen füllen...
Ein Workaround könnte so aussehen:
Delphi-Quellcode:
type
TTest = record
case Integer of
0: (Typ : Boolean); // LongBool? (check C/C++ code)
1: (Reserved: Double; // Alignment
{ end; }
case {Typ: }Boolean of
False: (T1: Integer);
True: (T2: Double));
{ end; }
end;
edit:
Zitat von
ma2xx:
... Ziel ist es ohne Dummy auszukommen UND ohne packed
Wird wegen des Compiler-Bugs nicht gehen...
ps: muss es denn auf der C/C++-Seite unbedingt eine unbenannte Union sein? (ist ohnehin nicht standard-konform...)