我只安装了32位Windows,因此我无法自行验证。
如果我理解正确,在Microsoft API中的各个地方使用的DWORD是参考原始的16位字,并且与当前的硬件架构无关?
所以看起来是32位的DWORD,即使我最终编译并链接我的应用程序以在64位Windows中运行,仍将保持32位?或者DWORD会变成128位宽吗?
答案 0 :(得分:20)
唯一改变32到64之间大小的是指针。所以DWORD保持32位宽。
有些事情并不是很明显的指针,例如: HANDLE,LPARAM,WPARAM。但这三个改变了宽度,因为它们实际上有指针。
答案 1 :(得分:3)
天哪,这是另一个合理的问题...... :)
它总是32位,因为在x86中“字”被认为是16位。如果尺寸发生变化,程序将会中断。
如果您需要原始尺寸DWORD
,请尝试DWORD_PTR
。
(Don't ask DWORD_PTR
,ULONG_PTR
,UINT_PTR
和size_t
之间的差异是什么; I have no idea微软在想什么发明了前三个......)
答案 2 :(得分:3)
DWORD始终为32位(无符号)。 QWORD始终为64位(无符号)。 然后是DWORD32和一个32位和64位的DWORD64。不要问我他们为什么在那里: - )
http://msdn.microsoft.com/en-us/library/cc230318(v=PROT.10).aspx
http://msdn.microsoft.com/en-us/library/cc230362(v=PROT.10).aspx
一般
http://msdn.microsoft.com/en-us/library/cc230309(v=PROT.10).aspx
答案 3 :(得分:0)
在x86处理器上,即使在64位Windows上,DWORD也是32位。请参阅此Wikipedia article。
答案 4 :(得分:0)
我甚至会比x86拱更进一步。并且一般说来,WORD可以被认为是16位。传统上,层次结构是BYTE(8位),WORD(16位),因此DWORD(如果D被认为是双宽WORD)将是32位。这并不一定与特定平台或语言有任何关系,BYTE已经是8位,而WORD已经是16位回到旧的8位计算机时代,甚至在x86拱门之前。存在