Question
In Delphi 2009 (or older versions), how do you check the "Align" compile option in the code?
The IFOPT
directive seems to work only with pure switches ( {$IFOPT A4}
does not compile ).
I couldn't find an equivalent constant or such defined ( {$IF Align = 4}
or such )
Solution
You can do this by defining a record with known packing rules and check it using SizeOf. Tested in Delphi 2009:
type
TTestRec = record
A: Byte;
B: Int64;
end;
{$IF SIZEOF(TTestRec) = 9}
{$MESSAGE HINT '$A1'}
{$ELSEIF SIZEOF(TTestRec) = 10}
{$MESSAGE HINT '$A2'}
{$ELSEIF SIZEOF(TTestRec) = 12}
{$MESSAGE HINT '$A4'}
{$ELSEIF SIZEOF(TTestRec) = 16}
{$MESSAGE HINT '$A8'}
{$ELSE}
{$MESSAGE HINT 'Unknown alignment'}
{$IFEND}
OTHER TIPS
Write code to test the actual runtime behavior. Only way I can think of.
There is {$IFOPT A+} directive, but it doesn't tell you alignment value.
I believe there is no way to do this :(
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow