据我所知,bool
类型的宽度是实现定义的。但是有没有固定宽度的布尔类型,或者我应该坚持,例如,uint8_t
代表一个固定宽度的布尔?
[编辑] 我制作了这个python脚本,自动生成一个C ++类,它可以保存我希望能够在微控制器和我的计算机之间发送的变量。它的工作方式是它还保持两个数组,这些数组包含指向这些变量中的每一个的指针以及每个变量的大小。这为我提供了必要的信息,可以轻松地序列化和反序列化这些变量中的每一个。为了使其工作,变量类型的sizeof,endianness等必须在两侧都相同,因为我在两侧使用相同的生成代码。 我不知道这是否会成为一个问题,但我不希望这样。我之前已经使用过这种(32位ARM)芯片,并且在过去没有发送整数和浮点类型的问题。然而,直到我回来并且可以在芯片上试用布尔值将是几天。这可能是一个更大的问题,因为此代码可能会在以后的其他芯片上重复使用。
所以我的问题是。是否在标准库中定义了固定宽度bool
类型,或者我应该使用uint8_t来表示布尔值?
答案 0 :(得分:3)
没有。如果您需要确定尺寸,请使用uint8_t
。在C相关语言中,任何整数类型都可以很容易地被视为布尔值。请参阅https://stackoverflow.com/a/4897859/1105015,详细讨论标准无法保证bool
的大小为任何特定值。