2

在 WinAPI 中:

typedef unsigned long DWORD;

我认为DWORD,WORD ...是计算机中的基本数据类型,无论int,unsigned long ...最终在汇编中都会转换为DWORD,为什么要在这里转换为unsigned long?我不能在没有定义的情况下直接使用 DWORD 吗?

4

2 回答 2

1

DWORD 是它定义的任何内容(在程序集中没有自动转换为特定宽度)。这个 typedef 是必需的,因为 WinAPI 接口都是用无符号长整数定义的,只要使用 DWORD。IOW,您需要此定义才能使用 API。

回答你的另一个问题。这个答案是否定的,没有定义就不能使用 DWORD。它不是编译器的内置类型。

Win32 API 的 DWORD 定义是固定的:http: //msdn.microsoft.com/en-us/library/aa383751 (VS.85).aspx

于 2011-11-17T08:31:43.533 回答
1

在 Windows API 和基于 x86 指令集的汇编语言中,DWORD 指定一个大小为 32 位的变量。所以是的,它通常是相同的大小。

你不能DWORD在 C++ 中使用类型而不定义它,因为它不是核心语言的一部分。的类型定义DWORD可能需要根据您的编译器和系统架构进行调整。显然,对于您的配置,该类型unsigned long有 32 位,因此 DWORD 定义为unsigned long.

于 2011-11-17T08:37:57.277 回答