54

Visual C++ では、DWORD は、マシン、プラットフォーム、および SDK に依存する単なる unsigned long です。ただし、DWORD はダブル ワード (つまり 2 * 16) であるため、DWORD は 64 ビット アーキテクチャでも 32 ビットなのでしょうか?

4

3 に答える 3

68

実際、32 ビットのコンピューターでは 1 ワードは 32 ビットですが、DWORD タイプは 16 ビットの古き良き時代の名残です。

プログラムを新しいシステムに簡単に移植できるようにするために、Microsoft はすべての古い型のサイズを変更しないことを決定しました。

公式リストはこちらにあります: http://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx

32 ビットから 64 ビットへの移行に伴って変更されたプラットフォーム依存型はすべて _PTR で終わります (DWORD_PTR は、32 ビット Windows では 32 ビット、64 ビット Windows では 64 ビットになります)。

于 2008-09-02T13:02:40.837 に答える
17

次のように定義されています。

typedef unsigned long       DWORD;

ただし、MSDN によると:

32 ビット プラットフォームでは、long は int と同義です。

したがって、DWORD は 32 ビット オペレーティング システムでは 32 ビットです。64 ビット DWORD には別の定義があります。

typdef unsigned _int64 DWORD64;

それが役立つことを願っています。

于 2008-09-02T12:55:47.700 に答える
11

いいえ ... すべての Windows プラットフォームで、DWORD は 32 ビットです。LONGLONG または LONG64 は、64 ビット型に使用されます。

于 2008-09-02T12:55:45.487 に答える