据我所知,
【编辑】 我编写了这个Python脚本,可以自动生成一个C++类,用于在微控制器和我的计算机之间传输变量。它的工作原理是保持两个数组,分别存储每个变量的指针和大小。这为我提供了必要的信息,以便轻松地对每个变量进行序列化和反序列化。然而,为了使其正常工作,变量类型的sizeof、字节顺序等必须在两端相同,因为我在两端都使用相同的生成代码。 我不知道这是否会成为问题,但我不认为会有问题。我之前已经使用过这个(32位ARM)芯片,在过去发送整数和浮点类型时没有遇到问题。不过,我需要几天时间才能回来并尝试在芯片上使用布尔类型。这可能会成为以后的一个更大问题,因为这段代码可能会在其他芯片上重复使用。
所以我的问题是,标准库中是否定义了固定宽度的
bool
类型的宽度是由实现定义的。但是否有固定宽度的布尔类型,或者我应该使用uint8_t
来代表固定宽度的布尔类型?【编辑】 我编写了这个Python脚本,可以自动生成一个C++类,用于在微控制器和我的计算机之间传输变量。它的工作原理是保持两个数组,分别存储每个变量的指针和大小。这为我提供了必要的信息,以便轻松地对每个变量进行序列化和反序列化。然而,为了使其正常工作,变量类型的sizeof、字节顺序等必须在两端相同,因为我在两端都使用相同的生成代码。 我不知道这是否会成为问题,但我不认为会有问题。我之前已经使用过这个(32位ARM)芯片,在过去发送整数和浮点类型时没有遇到问题。不过,我需要几天时间才能回来并尝试在芯片上使用布尔类型。这可能会成为以后的一个更大问题,因为这段代码可能会在其他芯片上重复使用。
所以我的问题是,标准库中是否定义了固定宽度的
bool
类型,或者我应该只使用uint8_t
来表示布尔值?
bool
类型是固定的true
和false
。但是这两种状态怎么可能有不同的宽度呢? - Thomas Matthewsbool
是8位,除了最低位被设置为0之外,其他位都被设置为0。 - Keith Thompsonbool
不能满足的呢?(“拥有固定宽度”不是一个答案。) - Keith Thompson