如何使用位域结构和联合生成 4 个字节?

How to make 4 bytes using bit field struct and union?

这是代码。

struct test {
    struct abc {
        int a : 24;
        union b {
            int b1 : 10;
            int b2 : 14;
        };
    };
    int c : 8;
};

我想将结构 abc 设为 3 字节大小,再加上一个额外的 1 字节大小变量以构成一个 4 字节结构。但是,由于内部结构实际上显示为 4 个字节,而结构测试的总大小为 5 个字节。

我使用的是 Visual Studio 2017 版。 (而且我也已经使用了 packed 选项)

如何将结构调整为 4 个字节?这是在已经在使用的代码中发现的一个错误,所以依赖性太大,我无法更改变量的顺序或在其中创建新结构。

#pragma pack(1)
struct test {
    struct abc {
        short a;
        union b {
            byte b1;
            byte b2;
        }_b;
    }_abc;
    byte c;
};