在WinAPI中定义的DWORD与程序集中的DWORD相同

时间:2011-11-17 08:25:25

标签: winapi assembly word dword

WinAPI中的

typedef unsigned long DWORD;

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

2 个答案:

答案 0 :(得分:1)

DWORD是它定义的任何内容(没有自动转换为程序集中的特定宽度)。需要此typedef,因为在使用DWORD的地方,WinAPI接口都使用unsigned long定义。 IOW,您需要使用此定义来使用API​​。

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

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

答案 1 :(得分:1)

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

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