我最近不得不在Delphi和C++中用於枚舉的不同默認大小,因爲我必須從delphi應用程序使用C++ dll。關於Delphi和C++在64位環境中的枚舉
一個函數調用返回一個結構數組(或delphi中的記錄),其第一個元素是一個枚舉。
爲了使這項工作,我使用打包記錄(或對齊(1) - 結構)。但是,由於delphi默認動態選擇一個枚舉變量的大小,並使用最小的數據類型(在我的例子中是一個字節),但C++對枚舉使用int,所以我的數據解釋不正確。
德爾福提供了一個編譯器開關來解決這個問題,所以在枚舉的聲明變得
{$Z4}
TTypeofLight =
(
V3d_AMBIENT,
V3d_DIRECTIONAL,
V3d_POSITIONAL,
V3d_SPOT
);
{$Z1}
我的問題是:
- 當他們在編什麼會成爲我的結構的/對於64位環境?
- 默認的C++整數增長到8字節嗎?
- 是否還有其他內存對齊/數據類型大小修改(除了指針)?
感謝您的意見。 +1 – sum1stolemyname 2010-04-08 11:34:04
(有一些主機單位是ILP64,iow整數= 64位,但你不太可能用普通的Delphi碰到它們) – 2010-04-08 12:14:22