标准C++中是否有固定宽度的bool类型?

Aar*_*ndt 5 c++ boolean fixed-width

据我所知,该bool类型的宽度是实现定义的.但是有没有固定宽度的布尔类型,或者我应该坚持,例如,a uint8_t代表一个固定宽度的布尔?

[编辑]我制作了这个python脚本,自动生成一个C++类,它可以保存我希望能够在微控制器和我的计算机之间发送的变量.它的工作方式是它还保持两个数组,这些数组包含指向这些变量中的每一个的指针以及每个变量的大小.这为我提供了必要的信息,可以轻松地序列化和反序列化这些变量中的每一个.为了使其工作,变量类型的sizeof,endianness等必须在两侧都相同,因为我在两侧使用相同的生成代码.我不知道这是否会成为一个问题,但我不指望它.我之前已经使用过这个(32位ARM)芯片,并且在过去没有发送整数和浮点类型的问题.然而,在我回来之前的几天,我可以尝试在芯片上使用布尔值.这可能是一个更大的问题,因为此代码可能会在以后的其他芯片上重用.

所以我的问题是.是否有bool标准库中定义的固定宽度类型,或者我应该使用uint8_t来表示布尔值?

Rob*_*ing 4

那没有。uint8_t如果您需要确定尺寸,请使用。在 C 相关语言中,任何整数类型都可以轻松地视为布尔值。请参阅/sf/answers/342850161/,详细讨论bool标准如何不保证 的大小为任何特定值。

  • 当然,这样做时不会隐式转换为“bool”,因此您必须小心。例如,“uint8_t x = 0x500 & 0x100;”将是“0”,但布尔值将是“true” (4认同)
  • @MarkRansom ITYM `(0x500 & 0x100) != 0` ;) (2认同)