gpt4 book ai didi

delphi - 为什么这个结构应该有 48 个字节

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

我试图将 winuser.h header 的一些新部分翻译为 Delphi。
为什么这个结构应该是 48 字节(只有这个大小被相应的函数接受)。以 4 字节为边界,它看起来应该有 40 个字节。

  typedef struct tagGESTUREINFO {
UINT cbSize;
DWORD dwFlags;
DWORD dwID;
HWND hwndTarget;
POINTS ptsLocation;
DWORD dwInstanceID;
DWORD dwSequenceID;
ULONGLONG ullArguments;
UINT cbExtraArgs;
} GESTUREINFO, *PGESTUREINFO;

如果它与8字节边界有关?如果是这样,它与 ULONGLONG 出现结构的任何情况有关吗?

谢谢

最佳答案

该结构为 48 字节大,因为 Windows API 需要 8 字节对齐。这只是 Microsoft Windows 采用的约定; MSDN says这是因为目前支持的最大整数类型是 8 字节大,所以 8 字节对齐确保所有整数类型都正确对齐。

(请记住,诸如 winuser.h 之类的头文件指定了 API ,但要使用该 API 实际使用已编译的库,您需要一个 ABI ,其中包括调用约定和结构对齐等详细信息。)

关于delphi - 为什么这个结构应该有 48 个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3071123/

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