c++11有类似quint8的东西吗?

Does c++11 have something like quint8?

本文关键字:quint8 c++11      更新时间:2023-10-16

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

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

谢谢。

是的,c++ 11增加了具有更精确定义大小的类型。这是参考

它们在<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变体是最大的可用类型。

是的,甚至更多。来自文档:

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