WinAPI中定义的DWORD与汇编中定义的DWORD相同吗

WinAPI中定义的DWORD与汇编中定义的DWORD相同吗,winapi,assembly,word,dword,Winapi,Assembly,Word,Dword,在WinAPI中: typedef unsigned long DWORD; 我想德沃德,这个词。。。是计算机中的基本数据类型,无论是int还是unsigned long。。。它最终将在汇编中转换为DWORD,为什么要在这里转换为无符号long?我不能在没有定义的情况下直接使用DWORD吗?DWORD是定义为什么的(在汇编中没有自动转换为特定宽度)。之所以需要这个typedef,是因为无论在哪里使用DWORD,WinAPI接口都是用无符号long定义的。你需要这个定义来使用API 回答你的另一

在WinAPI中:

typedef unsigned long DWORD;

我想德沃德,这个词。。。是计算机中的基本数据类型,无论是int还是unsigned long。。。它最终将在汇编中转换为DWORD,为什么要在这里转换为无符号long?我不能在没有定义的情况下直接使用DWORD吗?

DWORD是定义为什么的(在汇编中没有自动转换为特定宽度)。之所以需要这个typedef,是因为无论在哪里使用DWORD,WinAPI接口都是用无符号long定义的。你需要这个定义来使用API

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


DWORD的定义对于Win32 API是固定的:

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


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

在大多数汇编语言中,字是32位的,因为字通常是CPU上的“自然”数据类型。x86有点奇怪,因为它是16位体系结构的扩展,所以一个字是16位,“双字”或dword是32位。所以“大多数汇编语言”并非如此,我只知道NASM、MASM和TASM,因为传统的原因,word是16位,DWORD表示32位。例如,DWORD是固定的,因为它会导致混乱,否则,同样的原因,它在Windows API中是固定的。我当时的印象是,这些是最常用的汇编语言,其他汇编语言也会如此。这些不是我所说的不同的汇编语言。它们是不同的汇编程序,但都以相同的指令集为目标。它们都使用
DWORD
来表示相同的意思,因为
DWORD
是由英特尔在指令集中定义的。MIPS、PowerPC或ARM CPU的汇编器根本不会使用DWORD,或者具有相同的含义,除非这些CPU也定义了这个术语