DWORD?
-
Hallöchen, ich habe da mal eine Frage, auf die ich nirgends eine zufriedenstellende Antwort finden konnte.
Während ich mich mit C++ beschäftige, stoße ich immer wieder auf Variablen vom Typ DWORD, habe aber keine Ahnung was diesen Typ ausmacht, oder warum speziell dieser verwendet wird.
Wäre euch dankbar, wenn jemand mir erklärt, was der Sinn und Zweck von DWORD ist
-
Das kommt von Windows. Man hat sich dort eigene Typen geschaffen, die unabhängig sind von der Größe von z.B. (unsigned) char, short, int und long.
BYTE, WORD, DWORD, ... sind unsigned int8, int16 und int32
Manchmal findet man auch QWORD (2 DWORD, also unsigned int64)Zur Zeit umfasst int 32 bit, früher waren dies aber mal 16 bit, in Zukunft sind das vielleicht 64 bit.
Du findest dies in windef.h
typedef unsigned long DWORD; typedef unsigned char BYTE; typedef unsigned short WORD; typedef int INT; typedef unsigned int UINT,*PUINT,*LPUINT;etc.
Ein DWORD ist also ein doppeltes WORD, und dieses besteht wiederum aus zwei BYTE. Man spricht hier jeweils vom LOBYTE und HIBYTE bzw. LOWORD und HIWORD:
windef.h:#define MAKEWORD(a,b) ((WORD)(((BYTE)(a))|(((WORD)((BYTE)(b)))<<8))) #define MAKELONG(a,b) ((LONG)(((WORD)(a))|(((DWORD)((WORD)(b)))<<16))) #define LOWORD(l) ((WORD)((DWORD)(l))) #define HIWORD(l) ((WORD)(((DWORD)(l)>>16)&0xFFFF)) #define LOBYTE(w) ((BYTE)(w)) #define HIBYTE(w) ((BYTE)(((WORD)(w)>>8)&0xFF))
-
Vielen dank, das erleuchtet mich
