2

WinAPI で:

typedef unsigned long DWORD;

DWORD、WORD ... はコンピューターの基本的なデータ型だと思いますが、int、unsigned long に関係なく...アセンブリで最終的に DWORD に変換されますが、ここで unsigned long に変換する必要があるのはなぜですか? 定義なしで DWORD を直接使用することはできませんか?

4

2 に答える 2

1

DWORD は定義されているものです (アセンブリで特定の幅への自動変換はありません)。この typedef が必要なのは、DWORD が使用されている場合、WinAPI インターフェイスはすべて unsigned long で定義されているためです。IOW、API を操作するには、この定義が必要です。

あなたの他の質問に答えるために。この答えはノーです。DWORD は定義なしでは使用できません。コンパイラの組み込み型ではありません。

DWORD の定義は Win32 API 用に修正されています: 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 に答える