Какой тип данных составляет 16 бит в 32-битной ОС и 32 бита в 64-битной ОС?
Я ищу тип данных (который будет использоваться в качестве индекса), он должен быть 16 бит в 32-битной ОС и 32-бит в 64-битной ОС. Я использую VS2010, и я знаю, что HALF_PTR может быть использован, но он не очень хорошо звучит, когда используется для индекса, и я все еще могу набрать его для более значимого имени, но до этого есть какой-либо определенный тип данных, который я могу использовать для это цель?
1 ответ
Решение
Вы можете использовать черты для создания псевдонима типа, который подходит вашей системе:
#include <cstdint>
template <unsigned int> struct HalfPtrImpl;
template <> struct HalfPtrImpl<4> { typedef uint16_t type; };
template <> struct HalfPtrImpl<8> { typedef uint32_t type; };
typedef HalfPtrImpl<sizeof(uintptr_t)>::type HalfPtr;
Сейчас использую HalfPtr
как твой тип.
(Вы можете ярлык выше, используя std::conditional
Пару раз. Много способов снять шкуру с этой кошки.)