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

问题描述 投票:46回答:3

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

c++ winapi 64-bit dword
3个回答
58
投票

实际上,在32位计算机上,一个单词是32位,但DWORD类型是16位好时光的剩余部分。

为了便于将程序移植到更新的系统,Microsoft决定所有旧类型都不会改变大小。

你可以在这里找到官方列表:http://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx

所有与平台相关的类型随着从32位到64位的转换而变为_PTR(DWORD_PTR在32位Windows上为32位,在64位Windows上为64位)。


15
投票

它被定义为:

typedef unsigned long       DWORD;

但是,根据MSDN:

在32位平台上,long与int同义。

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

typdef unsigned _int64 DWORD64;

希望有所帮助。


6
投票

不...在所有Windows平台上,DWORD是32位。 LONGLONG或LONG64用于64位类型。

© www.soinside.com 2019 - 2024. All rights reserved.