【发布时间】:2013-05-28 14:05:20
【问题描述】:
根据Windows Data Type,DWORD 和 DWORD32 都是“一个 32 位无符号整数”,除了 IntSafe.h,另一个在 BaseTsd.h 中定义。使用其中一种有什么区别或优势?
【问题讨论】:
-
我很确定 Windows DWORD总是是一个 32 位无符号整数。 DWORD 与 windows API 匹配。
根据Windows Data Type,DWORD 和 DWORD32 都是“一个 32 位无符号整数”,除了 IntSafe.h,另一个在 BaseTsd.h 中定义。使用其中一种有什么区别或优势?
【问题讨论】:
Windows API 充满了数十年的 C #define 和 typedef 碎片。
你看到的是一些碎片。也许在某个时候,他们考虑过拥有一个可按比例缩放的DWORD,而DWORD32 不会。
但这种希望早已破灭。它们几乎可以肯定是相同的类型,并且几乎可以肯定永远不会变得不相同。
如果您出于某种原因使用名为 DWORD16 和 DWORD64 的名称,则名称 DWORD32 将适合,或者如果您出于其他原因确实想强调 DWORD32 类型中的位数,这种类型可能是一个更好的主意。否则,选择一个,使用它,然后忽略另一个。
【讨论】:
它们是相同的。维护DWORD 是为了向后兼容数十年的遗留代码,并且始终为 32 位。 DWORD32 是相同的数据类型,只是明确指出它是 32 位的。 DWORD32 是与 DWORD64 和 DWORD_PTR 同时引入的,当时 API 正在更新以支持 64 位开发。
【讨论】: