2011-02-14 17 views
15

Solo tengo Windows de 32 bits instalado, por lo que no puedo verificarlo yo mismo.Windows API de 64 bits: ¿cuál es el tamaño de un C/C++ "DWORD"?

Si entiendo correctamente, el DWORD utilizado en varios lugares en la API de Microsoft es en referencia a la palabra original de 16 bits, y no tiene nada que ver con la arquitectura de hardware actual?

Entonces DWORD que parece ser de 32 bits, seguirá siendo de 32 bits, incluso cuando finalmente compilo y enlace mi aplicación para ejecutar en Windows de 64 bits? ¿O DWORD se convertirá en 128 bits de ancho?

Respuesta

19

Lo único que cambia de tamaño entre 32 y 64 son los punteros. Así que DWORD tiene 32 bits de ancho.

Algunas cosas no son inmediatamente indicadores evidentes, p. Ej. HANDLE, LPARAM, WPARAM. Pero estos tres cambian de ancho ya que en realidad contienen punteros.

3

Oh Dios, aquí viene otra pregunta razonable ... :)

Siempre es de 32 bits, ya que una "palabra" se considera que es de 16 bits en x86. Los programas se romperían si el tamaño cambiara.

Si necesita una nativa DWORD, intente DWORD_PTR.

(Don't ask lo que la diferencia entre DWORD_PTR, ULONG_PTR, UINT_PTR, y es size_t; I have no idea lo que Microsoft estaba pensando cuando se inventó la primera de tres ...)

0

En los procesadores x86, un DWORD es de 32 bits, incluso en Windows de 64 bits. Vea esto Wikipedia article.

0

Incluso iría más allá de la arquitectura x86. y decir, en general, una PALABRA puede considerarse de 16 bits. La jerarquía tradicionalmente ha sido BYTE (8 bits), WORD (16 BITS), por lo que DWORD (si D se toma como una WORD de doble ancho) sería 32 bits. Esto no necesariamente tiene que ver con una plataforma o lenguaje en particular, un BYTE ha sido de 8 bits y un WORD ha sido de 16 bits que se remonta a los días anteriores de computadora de 8 bits, incluso antes del arco x86. existió

+2

Una palabra tenía 32 bits en los mainframes mucho antes de que existiera x86. –

Cuestiones relacionadas