c ++ 11有像quint8这样的东西吗?

时间:2014-06-11 18:32:46

标签: c++ qt c++11 qtcore

Qt中有一些类型,例如quint8在Qt支持的所有平台上保证为8位。

我想知道C ++ 11是否有这种类型?如果没有,有什么替代方案?

感谢。

2 个答案:

答案 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