54

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

4

3 回答 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 回答