【发布时间】:2010-04-08 08:41:44
【问题描述】:
我最近不得不解决用于在 Delphi 和 c++ 中枚举的不同默认大小,因为我必须使用来自 delphi 应用程序的 c++ dll。
一个函数调用返回一个结构数组(或 delphi 中的记录),其第一个元素是一个枚举。
为了完成这项工作,我使用了打包记录(或对齐 (1) 结构)。但是,由于 delphi 默认动态选择枚举变量的大小并使用可能的最小数据类型(在我的例子中是字节),但 C++ 使用 int 表示枚举,我的数据没有被正确解释。
Delphi 提供了一个编译器开关来解决这个问题,所以枚举的声明变成了
{$Z4}
TTypeofLight =
(
V3d_AMBIENT,
V3d_DIRECTIONAL,
V3d_POSITIONAL,
V3d_SPOT
);
{$Z1}
我的问题是:
- 当我的结构在 64 位环境上/为 64 位环境编译时会变成什么?
- 默认的 c++ 整数是否增长到 8 字节?
- 是否还有其他内存对齐/数据类型大小修改(指针除外)?
【问题讨论】:
标签: c++ delphi 64-bit portability enumeration