具有不完整char数组的类

时间:2015-02-27 16:04:14

标签: c++

在二进制消息传递的库中,我有一些类似的结构:

struct __attribute__((__packed__)) Header {
    int16_t msg_type;
    int16_t msg_size;
    char payload[];
};

struct __attribute__((__packed__)) SomeMessage {
    static const int value MsgType = 42;

    int64_t field1;
    int32_t field2;
    // ...
};

对于编写消息,我可以创建一个包含两者的打包类型:

struct __attribute__((__packed__)) WriteMessage {
    Header hdr;
    SomeMessage body;
};

这是有效的 - 类型的大小和所有字段的对齐方式正如我所希望的那样。海湾合作委员会给了我一个警告,但其他工作:

  

警告:ISO C ++禁止零大小数组'有效负载'[-pedantic]

但为什么会这样呢?实际上,char payload[]占用了零空间 - 这不是不允许的吗?我是否依赖于未定义的行为,恰好做了一些合理的事情?

0 个答案:

没有答案