在 Visual C++ 中,DWORD 只是一个无符号长整数,它依赖于机器、平台和 SDK。但是,由于 DWORD 是双字(即 2 * 16),在 64 位架构上 DWORD 仍然是 32 位吗?
原文由 Haim Bender 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Visual C++ 中,DWORD 只是一个无符号长整数,它依赖于机器、平台和 SDK。但是,由于 DWORD 是双字(即 2 * 16),在 64 位架构上 DWORD 仍然是 32 位吗?
原文由 Haim Bender 发布,翻译遵循 CC BY-SA 4.0 许可协议
它被定义为:
typedef unsigned long DWORD;
但是,根据 MSDN:
在 32 位平台上,long 是 int 的同义词。
因此,DWORD 在 32 位操作系统上是 32 位。 64 位 DWORD 有一个单独的定义:
typdef unsigned _int64 DWORD64;
希望有帮助。
原文由 Mark Ingram 发布,翻译遵循 CC BY-SA 2.5 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
实际上,在 32 位计算机上,一个字是 32 位的,但 DWORD 类型是过去 16 位的遗留物。
为了更容易将程序移植到新系统,微软决定所有旧类型都不会改变大小。
你可以在这里找到官方列表:http: //msdn.microsoft.com/en-us/library/aa383751 (VS.85).aspx
所有随着从 32 位转换到 64 位而改变的平台相关类型都以 _PTR 结尾(DWORD_PTR 在 32 位 Windows 上将是 32 位,在 64 位 Windows 上将是 64 位)。