18

私は 32 ビットの Windows しかインストールしていないため、これを自分で確認することはできません。

私の理解が正しければ、Microsoft API のさまざまな場所で使用されている DWORD は元の 16 ビット ワードを参照しており、現在のハードウェア アーキテクチャとは関係がないのでしょうか?

32ビットのように見えるDWORDは、最終的にアプリをコンパイルしてリンクして64ビットWindowsで実行しても、32ビットのままになりますか? それとも、DWORD は 128 ビット幅になりますか?

4

5 に答える 5

22

サイズが 32 から 64 の間で変化するのはポインターだけです。したがって、DWORD は 32 ビット幅のままです。

HANDLE、LPARAM、WPARAM など、すぐには明らかにポインターではないものもあります。ただし、これら 3 つは実際にポインターを保持するため、幅が変わります。

于 2011-02-14T08:03:11.533 に答える
3

DWORD は常に 32 ビット (符号なし) です。QWORD は常に 64 ビット (符号なし) です。次に、32 ビットと 64 ビットの DWORD32 と DWORD64 があります。なぜ彼らがそこにいるのか私に聞かないでください:-)

http://msdn.microsoft.com/en-us/library/cc230318(v=PROT.10).aspx

http://msdn.microsoft.com/en-us/library/cc230362(v=PROT.10).aspx

そして一般的に

http://msdn.microsoft.com/en-us/library/cc230309(v=PROT.10).aspx

于 2011-02-14T08:03:17.207 に答える
2

なんてこった、ここに別の合理的な質問があります... :)

「単語」は x86 では 16 ビットと見なされるため、常に 32 ビットです。サイズが変わるとプログラムが壊れます。

ネイティブサイズが必要な場合はDWORD、試してみてくださいDWORD_PTR

( 、、、およびの違いは何かと聞かないでください。Microsoft が最初の 3 つを発明したときに何を考えていたのかわかりません...)DWORD_PTRULONG_PTRUINT_PTRsize_t

于 2011-02-14T08:00:37.020 に答える
0

x86 プロセッサでは、64 ビット Windows でも、DWORD は 32 ビットです。このウィキペディアの記事を参照してください。

于 2011-02-14T08:02:58.817 に答える
0

私は x86 arch よりも先に進みます。一般に、WORD は 16 ビットと見なすことができます。階層は従来、BYTE (8 ビット)、WORD (16 ビット) であったため、DWORD (D が 2 倍幅の WORD である場合) は 32 ビットになります。これは必ずしも特定のプラットフォームや言語とは関係ありません。バイトは 8 ビット、ワードは 16 ビットで、x86 アーキテクチャ以前の古い 8 ビット コンピューターの時代までさかのぼります。存在した

于 2011-07-08T14:31:06.780 に答える