gpt4 book ai didi

delphi - 最小枚举大小在 Delphi 中不起作用

转载 作者:行者123 更新时间:2023-12-03 18:16:00 25 4
gpt4 key购买 nike

为了与 C/C++ 结构交互,我必须将 Delphi 记录中的最小枚举大小设置为 4。但是,我无法让它正常工作。

type
TFooEnum = (e1, e2, e3);

{$Z4}
TFoo = record
public
f: TFooEnum;
b: byte;
end;
{$Z1}

writeln(SizeOf(TFoo)); -> output is 2 instead of 8

我也尝试过使用 {$Z+}{$MINENUMSIZE 4} 它只有在我为整个项目的编译器选项中设置它时才有效,但这会搞砸其他记录内存布局,其中枚举的大小必须为 1 个字节。

最佳答案

大小是枚举类型本身的一个属性。所以你必须像这样声明你的枚举类型:

type
{$Z4}
TFooEnum = (e1, e2, e3);
{$Z1}

考虑这一点的方式是,对齐记录的记录布局完全由记录成员的大小和对齐属性决定。 $MINENUMSIZE 指令仅通过影响任何枚举类型成员的大小和对齐属性来间接影响布局。

关于delphi - 最小枚举大小在 Delphi 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28673604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com