Saltar al contenido

¿Por qué en C ++ usamos DWORD en lugar de unsigned int?

Solución:

DWORD no es un tipo C ++, está definido en <windows.h>.

La razon es que DWORD tiene un rango y formato específicos en los que se basan las funciones de Windows, por lo que si necesita ese rango específico, use ese tipo. (O como dicen “Cuando estés en Roma, haz lo que hacen los romanos”). Para ti, eso corresponde a unsigned int, pero puede que no siempre sea así. Para estar seguro, use DWORD cuando una DWORD se espera, independientemente de lo que realmente pueda ser.

Por ejemplo, si alguna vez cambiaron el rango o formato de unsigned int podrían usar un tipo diferente para subyacer DWORD para mantener los mismos requisitos, y todo el código usando DWORD no sería más sabio. (Del mismo modo, podrían decidir DWORD necesita ser unsigned long long, cámbielo y todo el código usando DWORD no sería más sabio.)


También tenga en cuenta unsigned int lo hace no necesario tener el rango de 0 a 4.294.967.295. Mira aquí.

Cuando MS-DOS y Windows 3.1 funcionaban en modo de 16 bits, una palabra Intel 8086 era de 16 bits, una palabra de Microsoft WORD de 16 bits, una DWORD de Microsoft de 32 bits y el int sin signo de un compilador típico era de 16 bits.

Cuando Windows NT operaba en modo de 32 bits, una palabra Intel 80386 era de 32 bits, una palabra de Microsoft WORD de 16 bits, una DWORD de Microsoft de 32 bits y el int sin signo de un compilador típico era de 32 bits. Los nombres WORD y DWORD ya no eran autodescriptivos, pero conservaban la funcionalidad de los programas de Microsoft.

Cuando Windows opera en modo de 64 bits, una palabra de Intel es de 64 bits, una palabra de Microsoft es de 16 bits, una DWORD de Microsoft es de 32 bits y el int sin signo de un compilador típico es de 32 bits. Los nombres WORD y DWORD ya no son autodescriptivos, Y un int sin firmar ya no se ajusta al principio de las sorpresas mínimas, pero conservan la funcionalidad de muchos programas.

No creo que WORD o DWORD vayan a cambiar nunca.

Los desarrolladores de SDK prefieren definir sus propios tipos utilizando typedef. Esto permite cambiar los tipos subyacentes solo en un lugar, sin cambiar todo el código del cliente. Es importante seguir esta convención. Es poco probable que se cambie DWORD, pero tipos como DWORD_PTR son diferentes en diferentes plataformas, como Win32 y x64. Entonces, si alguna función tiene el parámetro DWORD, use DWORD y no unsigned int, y su código se compilará en todas las versiones futuras de encabezados de Windows.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *