GMa*_*ckG 150
DWORD它不是C++类型,它是在中定义的<windows.h>.
原因是DWORDWindows函数具有特定的范围和格式,因此如果您需要特定范围使用该类型.(或者正如他们所说的"在罗马时,像罗马人那样做.")对于你来说,这恰好相应unsigned int,但情况可能并非总是如此.为了安全起见,请DWORD在DWORD预期时使用,无论其实际情况如何.
例如,如果他们改变了范围或格式,unsigned int他们可以使用不同的类型DWORD来保持相同的要求,并且所有使用的代码DWORD都是非常明智的.(同样,他们可以决定DWORD需要unsigned long long,改变它,所有使用的代码DWORD都是非常明智的.)
还要注意unsigned int它没有必要有范围为0〜4294967295.看到这里.
Win*_*mer 91
当MS-DOS和Windows 3.1在16位模式下运行时,Intel 8086字为16位,Microsoft WORD为16位,Microsoft DWORD为32位,典型编译器的unsigned int为16位.
当Windows NT在32位模式下运行时,Intel 80386字为32位,Microsoft WORD为16位,Microsoft DWORD为32位,典型编译器的unsigned int为32位.名称WORD和DWORD不再是自描述的,但它们保留了Microsoft程序的功能.
当Windows以64位模式运行时,Intel字为64位,Microsoft WORD为16位,Microsoft DWORD为32位,典型编译器的unsigned int为32位.名称WORD和DWORD不再是自描述的,并且unsigned int不再符合最少惊喜的原则,但它们保留了许多程序的功能.
我不认为WORD或DWORD会改变.
Ale*_*x F 12
SDK开发人员更喜欢使用typedef定义自己的类型.这允许仅在一个地方更改基础类型,而无需更改所有客户端代码.遵循这一惯例很重要.DWORD不太可能被更改,但像DWORD_PTR这样的类型在不同的平台上是不同的,如Win32和x64.因此,如果某个函数具有DWORD参数,请使用DWORD而不是unsigned int,并且您的代码将在以后的所有Windows头文件中编译.
对于我自己,我认为unsigned int是特定于平台的.整数可以是8位,16位,32位或甚至64位.
另一方面,DWORD指定了自己的大小,即Double Word.字是16位,所以DWORD将在所有平台上称为32位