我只安装了32位Windows,所以我无法自己validation。
如果我理解正确,那么在Microsoft API的各个地方使用的DWORD是参考原来的16位字,而与当前的硬件架构无关?
因此,即使当我最终编译并链接我的应用程序以在64位Windows中运行时,似乎是32位的DWORD也将保持32位? 或者将DWORD变成128位宽?
唯一改变32和64之间的大小是指针。 所以DWORD保持32位宽。
有些东西并不是立即明确的指针,例如HANDLE,LPARAM,WPARAM。 但是,这三个变化的宽度,因为他们实际上持有指针。
哦,上帝,这是另一个合理的问题… 🙂
它总是32位,因为在x86中“word”被认为是16位。 如果大小改变,程序将会中断。
如果您需要一个原生大小的DWORD
,请尝试DWORD_PTR
。
( 不要问 DWORD_PTR
, ULONG_PTR
, UINT_PTR
和size_t
之间的区别是什么; 我不知道微软在发明前三个时候在想什么…)
DWORD总是32位(无符号)。 QWORD总是64位(无符号)。 然后是DWORD32和一个DWORD64 32和64位。 不要问我为什么他们在那里:-)
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
在x86处理器上,即使在64位Windows上,DWORD也是32位。 看这个维基百科的文章 。
我甚至会比x86拱门更进一步。 一般来说,WORD可以被认为是16位。 层次传统上是BYTE(8位),WORD(16位),所以DWORD(如果D被认为是双宽WORD)将是32位。 这并不一定与特定的平台或语言有关,BYTE已经是8位,而WORD已经有16位可以回溯到旧的8位计算机时代,甚至在x86之前。 存在