This question already has answers here:
Why does the Win32-API have so many custom types?
(4个答案)
4年前关闭。
我不害怕承认我是C++新手,因此这似乎是一个愚蠢的问题,但是...。
我看到DWORD在代码示例中到处使用。当我查找DWORD的真正含义时,它显然只是一个无符号的int(0到4,294,967,295)。那么我的问题是,为什么我们要有DWORD?整数类型“unsigned int”没有给我们带来什么?它与可移植性和机器差异有关吗?
(4个答案)
4年前关闭。
我不害怕承认我是C++新手,因此这似乎是一个愚蠢的问题,但是...。
我看到DWORD在代码示例中到处使用。当我查找DWORD的真正含义时,它显然只是一个无符号的int(0到4,294,967,295)。那么我的问题是,为什么我们要有DWORD?整数类型“unsigned int”没有给我们带来什么?它与可移植性和机器差异有关吗?
最佳答案
DWORD
不是C++类型,而是在<windows.h>
中定义的。
原因是DWORD
具有Windows函数所依赖的特定范围和格式,因此如果您需要特定范围,请使用该类型。 (或者如他们所说的“在罗马时,就像罗马人一样。”。)对您来说,这恰好对应于unsigned int
,但并非总是如此。为安全起见,无论何时可能需要DWORD
,都应使用DWORD
。
例如,如果他们更改了unsigned int
的范围或格式,则可以使用其他类型来代替DWORD
来保持相同的要求,并且所有使用DWORD
的代码都不是明智的选择。 (同样,他们可以确定DWORD
需要为unsigned long long
,将其更改,并且所有使用DWORD
的代码都不是明智的选择。)
另请注意,unsigned int
的范围不必为0到4,294,967,295。参见here。