非Pod结构的压缩联合

时间:2018-11-22 22:56:46

标签: c++ c++11 member-initialization packed

我想知道,以下列方式组织数据是否可以接受?由于成员初始化程序的缘故,结构不再是POD类型,并且编译器发出有关打包属性被忽略的警告。是否可以保证它们包装好?

struct StructOne
{
    const quint8 h{0x11};
} __attribute__((packed));

struct StructTwo
{
    const quint8 h{0x22};
} __attribute__((packed));

struct StructThree
{
    quint8 s{0x33}
    union
    {
        StructOne s1;
        StructTwo s2;
    } __attribute__((packed));
} __attribute__((packed));

struct Top
{
    union
    {
        StructThree s3;
        quint8 data[2];
    } __attribute__((packed));
} __attribute__((packed));

0 个答案:

没有答案