在一个字段定义中保持安全吗?

时间:2012-11-01 04:43:30

标签: c++ boolean bit-fields

  

可能重复:
  C++ bitfield packing with bools

在位域定义中使用C ++的bool关键字是否安全?

类似的东西:

struct flags {
    bool a : 1;
    bool b : 1;
}

2 个答案:

答案 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   类型