在位域定义中使用C ++的bool
关键字是否安全?
类似的东西:
struct flags {
bool a : 1;
bool b : 1;
}
答案 0 :(得分:6)
From C ++ 03 9.6“Bit-fields”:
位域应具有整数或枚举类型(3.9.1)。它是 实现 - 定义是否平原(既没有明确签名也没有 unsigned)char,short,int或long位字段是有符号或无符号的。一个 bool值可以成功存储在任何非零的位域中 尺寸。 ...
如果值true或false存储在bool类型的位字段中 任何大小(包括一位位字段),原始bool值和 比特字段的值应相等。 ...
3.9.1 / 7“基本类型”指定bool
是一个整数类型。
答案 1 :(得分:5)
是。实际上,您可以使用sizeof(bool) * CHAR_BIT
作为指南,了解可用的位数。
From C++98,§9.6.3
位字段应具有整数或枚举类型(3.9.1)。
来自C ++ 98,§3.9.1.7
类型bool,char,wchar_t以及有符号和无符号整数类型统称为integer 类型