我正在研究协议模式语言,似乎 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 模式语法中声明此更改?一个之前/之后的例子会很棒!