在Delphi 2009(或早期版本)中,如何在代码中检查“Align”编译选项?
我找不到等效的常量或定义(
IFOPT
指令似乎只适用于纯开关({$IFOPT A4}
不会编译)。我找不到等效的常量或定义(
{$IF Align = 4}
或类似)。IFOPT
指令似乎只适用于纯开关({$IFOPT A4}
不会编译)。{$IF Align = 4}
或类似)。你可以通过定义一个具有已知打包规则的记录,并使用SizeOf进行检查来实现此目的。在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}
有{$IFOPT A+}指令,但它并没有告诉你对齐值。
我相信没有办法做到这一点 :(