32 位和 64 位代码的 DWORD 有多大?

新手上路,请多包涵

在 Visual C++ 中,DWORD 只是一个无符号长整数,它依赖于机器、平台和 SDK。但是,由于 DWORD 是双字(即 2 * 16),在 64 位架构上 DWORD 仍然是 32 位吗?

原文由 Haim Bender 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.7k
2 个回答

实际上,在 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 位)。

原文由 Nir 发布,翻译遵循 CC BY-SA 2.5 许可协议

它被定义为:

 typedef unsigned long       DWORD;

但是,根据 MSDN:

在 32 位平台上,long 是 int 的同义词。

因此,DWORD 在 32 位操作系统上是 32 位。 64 位 DWORD 有一个单独的定义:

 typdef unsigned _int64 DWORD64;

希望有帮助。

原文由 Mark Ingram 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题