在 Visual C++ 中,DWORD 只是一个无符号长整数,它依赖于机器、平台和 SDK。但是,由于 DWORD 是双字(即 2 * 16),在 64 位架构上 DWORD 仍然是 32 位吗?
winter
问问题
135185 次
3 回答
68
实际上,在 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 位)。
于 2008-09-02T13:02:40.837 回答
17
它被定义为:
typedef unsigned long DWORD;
但是,根据 MSDN:
在 32 位平台上,long 是 int 的同义词。
因此,DWORD 在 32 位操作系统上是 32 位。64 位 DWORD 有一个单独的定义:
typdef unsigned _int64 DWORD64;
希望有帮助。
于 2008-09-02T12:55:47.700 回答
11
不...在所有 Windows 平台上,DWORD 都是 32 位。LONGLONG 或 LONG64 用于 64 位类型。
于 2008-09-02T12:55:45.487 回答