2010-03-12 3 views
3

У меня есть поток с обратным типом DWORD в C, но затем он обрабатывается указателем типа HANDLE.В чем разница между типами DWORD и HANDLE в C?

В чем разница между этими двумя типами?

Я задаю этот вопрос специально для ANSI C.

Это правильно, что DWORD является uint типа и HANDLE является PVOID и C позволяет подавать непосредственно DWORD к HANDLE. Но есть ли разница в этих типах или я могу просто сказать, что они одинаковы?

Это вопрос, который был задан во время обсуждения. Я хочу знать, что такое правильный ответ.

+0

C "позволяет напрямую нанести" * что-либо * на * что-нибудь еще * (кроме указателей функций), поэтому это вряд ли показатель. – Medinoc

ответ

4

Win32:

  • DWORD 32 бит без знака длиной
  • HANDLE недействительным * (32 битный указатель)

Win64

  • DWORD 32 бит без знака длиной
  • HANDLE void * (64-битный указатель)

Не считайте, что вы можете отбрасывать один на другой. Он будет работать для Win32 и сломаться, когда вы портируете его на Win64.

+0

Я не вижу, как это отвечает на вопрос - в какой-то момент не упоминалось о Windows, как оно имеет значение? – WhyNotHugo

0

A HANDLE - PVOID или void * typedef, DWORD - это uint32. Не является ли длина void * в зависимости от архитектуры памяти (например, x86 & x64)?

Смежные вопросы