You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cap'n Proto中为两个枚举标识符设置相同值?

在Cap'n Proto中为枚举添加别名的正确方法

要实现给枚举项添加别名、同时兼容二进制API的需求,你需要使用Cap'n Proto专门的**alias关键字**,你的两种写法都不符合它的语法规范:

正确写法1:给原有枚举项直接添加别名

保留原有的orange @2,在其行尾追加alias yellow,这样yellow就会成为orange的别名,共享同一个序号:

enum Color {
    red @0;
    blue @1;
    orange @2 alias yellow;
}

正确写法2:单独声明别名项

也可以单独写一行声明yellow,指定序号并加上alias标记,效果和上面完全一致:

enum Color {
    red @0;
    blue @1;
    orange @2;
    yellow @2 alias;
}

为什么你的写法无效?

  • 第一种写法直接重复指定@2,Cap'n Proto不允许枚举项出现重复序号,因此报Duplicate ordinal number错误。
  • 第二种写法用了C++的赋值语法yellow = orange,这不是Cap'n Proto支持的语法,因此触发解析错误。

使用上述正确写法后,新代码可以直接用yellow,旧代码继续用orange,二进制数据的数值始终是2,完全不会破坏原有API兼容性。

内容的提问来源于stack exchange,提问作者OznOg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 01:22:04