И DWORD(а также его производные) никто нормальный использовать не будет. uint32_t, uintptr_t, ptrdiff_t.ну и ващет dword это unsinged int32 а не int32
верно, особенно про совместимость с совместимостямипотому что DWORD обеспечивыет совместимость со всеми совмястимостями и заголовками windows
sizeof(uint32_t) != sizeof(uintptr_t)uint32_t, uintptr_t, ptrdiff_t.
C99верно, особенно про совместимость с совместимостями
sizeof(uint32_t) != sizeof(uintptr_t)
7.18.1.4 Integer types capable of holding object pointers
1 The following type designates a signed integer type with the property that any valid
pointer to void can be converted to this type, then converted back to pointer to void,
and the result will compare equal to the original pointer:
intptr_t
The following type designates an unsigned integer type with the property that any valid
pointer to void can be converted to this type, then converted back to pointer to void,
and the result will compare equal to the original pointer:
uintptr_t
These types are optional.
uintptr_t might be the same size as a void*. It might be larger. It could conceivably be smaller, although such a C++ implementation approaches perverse. For example on some hypothetical platform where void* is 32 bits, but only 24 bits of virtual address space are used, you could have a 24-bit uintptr_t which satisfies the requirement. I don't know why an implementation would do that, but the standard permits it.
Дело в том, что int будет занимать 4 байта (x86+).C99
Stackoverflow:Код:7.18.1.4 Integer types capable of holding object pointers 1 The following type designates a signed integer type with the property that any valid pointer to void can be converted to this type, then converted back to pointer to void, and the result will compare equal to the original pointer: intptr_t The following type designates an unsigned integer type with the property that any valid pointer to void can be converted to this type, then converted back to pointer to void, and the result will compare equal to the original pointer: uintptr_t These types are optional.
Но в целом да, это энивей не раскрывает тайну почему sizeof(uintptr_t) должен быть эквивалентен sizeof(uint32_t)Код:uintptr_t might be the same size as a void*. It might be larger. It could conceivably be smaller, although such a C++ implementation approaches perverse. For example on some hypothetical platform where void* is 32 bits, but only 24 bits of virtual address space are used, you could have a 24-bit uintptr_t which satisfies the requirement. I don't know why an implementation would do that, but the standard permits it.
речь хоть и про x86+(dword), но в целом это не имеет сути изза разной семантики этих типов.Дело в том, что int будет занимать 4 байта (x86+).
uintptr же.. ты описал ;)
бля, резюмируя :отвечая на вопрос автора - нет, не используют. сумасшедшие индусы, что работают в майкрософт - не все. их кодстиль адаптировать не советую никому.
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz