Qt中有一些类型,例如quint8在Qt支持的所有平台上保证为8位。
我想知道C ++ 11是否有这种类型?如果没有,有什么替代方案?
感谢。
答案 0 :(得分:14)
是的,C ++ 11添加了具有更精确定义大小的类型。这是the reference。
它们在<cstdint>
中定义。
您可以保证:
intmax_t uintmax_t
int_least8_t uint_least8_t
int_least16_t uint_least16_t
int_least32_t uint_least32_t
int_least64_t uint_least64_t
int_fast8_t uint_fast8_t
int_fast16_t uint_fast16_t
int_fast32_t uint_fast32_t
int_fast64_t uint_fast64_t
您可能有也可能没有:
int8_t uint8_t
int16_t uint16_t
int32_t uint32_t
int64_t uint64_t
intptr_t uintptr_t
说明:
u
前缀表示未签名。least
变体是可用的最小整数类型,至少具有该宽度。fast
变体是可用的最快整数类型,至少具有该宽度。intptr
变体可以转换为void*
并返回。max
变种是最大的可用类型。答案 1 :(得分:1)
是的,it does, and even more。来自文档:
uint8_t unsigned integer type with width of 8
uint_fast8_t fastest unsigned integer type with width of 8
uint_least8_t smallest unsigned integer type with width of at least 8
免责声明:这显然不适用于支持Qt且没有C ++ 11的平台。如果您计划支持这些,请坚持使用quint8
,否则请使用现代C ++。
确保在qmake项目文件中有这个以实际启用C ++ 11:
CONFIG += c++11