0

我正在研究协议模式语言,似乎 Cap'n'proto 会满足我的需求,但是我需要一个我在文档中找不到的关键功能:

假设我有这个带有两个结构成员的标记联合,采用类似 C 的语法:

struct taggedUnion {
    int tag;
    union {
        struct a {
           int x;
        }

        struct b {
            float x;
        }
    }
}

那么我以后可以向标记的联合添加另一个结构,同时仍然能够读取旧数据吗?

struct taggedUnion {
    int tag;
    union {
        struct a {
           int x;
        }

        struct b {
            float y;
        }

        struct c {
            int z;
            bool b;
        }
    }
}

感觉它应该是可行的,但我在文档中找不到任何东西说它是可行的。有一个关于在不破坏线路兼容性的情况下可扩展组的注释(旧数据的新字段归零)。

如果可能,我将如何在 cap'n proto 模式语法中声明此更改?一个之前/之后的例子会很棒!

4

1 回答 1

0

找到了。... new fields may be added to existing groups and unions似乎它可能是这个问题的答案。

于 2020-04-10T17:19:39.227 回答