使用与结构内部的位字段结合的正确语法

liv*_*e75 6 c++ struct unions bit-fields

我有以下系列的结构.

struct FooWord1
{
    unsigned int Fill      :  8;
    unsigned int someData1 : 18;
    unsigned int someData2 : 6;
};

struct FooWord2
{
    unsigned int Fill      :  8;
    union
    {
        unsigned int A_Bit : 1;
        unsigned int B_Bit : 1;
    };
    unsigned int someData3 : 23;
};

struct Foo_Data
{
    FooWord1 fooWord1;
    FooWord2 fooWord2;
    FooWord3 fooWord3;  // similar to FooWord1
    FooWord4 fooWord4;  // similar to FooWord1
    FooWord5 fooWord5;  // similar to FooWord1
};

Foo_Data fooArray[SIZE];
Run Code Online (Sandbox Code Playgroud)

数据fooArray从网络消息逐字节复制.someData3如果我们不使用带有1位字段(A_bitB_bit)的联合,我们得到我们期望的数据,但是一旦我们放入联合,单词就会被"关闭"2个单词.

我们希望在那里使用联合,因为这些结构用于不同类型的消息,但是不同消息的含义A_BitB_Bit不同.我们可以使用注释,但在代码中执行它会很好.

我究竟做错了什么?

liv*_*e75 0

答案就在对原问题的评论中。 Fill、 theunionsomeData3都会以单独的单词结束,因为 theunion在结构中开始一个新单词。