64-битный Windows API: каков размер C/С++ "DWORD"?
У меня установлена только 32-разрядная Windows, поэтому я не могу проверить это сам.
Если я правильно понимаю, DWORD, используемый в разных местах Microsoft API, относится к исходному 16-битовому слову и не имеет ничего общего с текущей аппаратной архитектурой?
Итак, DWORD, который, кажется, 32 бита, останется 32 бит, даже когда я в конечном итоге компилирую и свяжу свое приложение для запуска в 64-битной Windows? Или будет DWORD шириной 128 бит?
Ответы
Ответ 1
Единственное, что изменяет размер между 32 и 64, - это указатели. Таким образом, DWORD остается 32 бит в ширину.
Некоторые вещи не являются явно явно указателями, например. РУЧКА, ЛПРАМ, WPARAM. Но эти три изменяют ширину, поскольку они фактически содержат указатели.
Ответ 2
Боже, вот еще один разумный вопрос...:)
Он всегда 32 бит, так как слово "считается" 16 бит в x86. Если бы размер изменился, программы разорвались бы.
Если вам нужен собственный размер DWORD
, попробуйте DWORD_PTR
.
(Не спрашивайте, в чем разница между DWORD_PTR
, ULONG_PTR
, UINT_PTR
и size_t
:; Я понятия не имею, о чем думала Microsoft, когда она придумала первые три...)
Ответ 3
DWORD всегда 32 бит (без знака). QWORD всегда 64 бит (без знака).
Тогда есть DWORD32 и DWORD64, которые 32 и 64 бита. Не спрашивайте меня, почему они там: -)
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
Ответ 4
На процессорах x86 DWORD составляет 32 бита, даже в 64-битной Windows. Смотрите Статья в Википедии.
Ответ 5
Я бы даже пошел дальше x86 arch. и, вообще говоря, СЛОВА можно считать 16 бит. Иерархия традиционно была BYTE (8 бит), WORD (16 BITS), и поэтому DWORD (если D считается двойным широким WORD) будет 32 бита. Это не обязательно имеет какое-либо отношение к определенной платформе или языку, BYTE имеет 8 бит, а WORD - 16 бит, возвращаясь к старым 8-битным компьютерным дням, даже до арки x86. существует