首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google-protobuf:如何使用Google protocol buffer创建联合

Google-protobuf:如何使用Google protocol buffer创建联合
EN

Stack Overflow用户
提问于 2016-03-10 20:37:07
回答 2查看 13.9K关注 0票数 13

我目前正在尝试使用Google Protocol Buffers for C语言。我不太确定如何使用GPB创建一个C联合。

例如,使用如下所示的proto文件:

代码语言:javascript
复制
message msgToSend
{
 required Type msg_type=1; //Type is a predefined enum to determine message type
 optional ReqMsg1 msg1=2;
 optional ReqMsg2 msg2=3;
}

我希望上面在编译时生成一个union,但生成的结构如下所示:

代码语言:javascript
复制
struct _msgToSend
{
 ProtobufCMessage base;
 Type msg_type;
 ReqMsg1 msg1;
 ReqMsg2 msg2;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-10 20:41:46

我觉得你做不到。

在Protobuf中,"optional“并不意味着”要么这样,要么那样“,就像C中的联合一样;它的意思是”这可能就在这里“。这就是为什么你会得到一个C结构,它可以同时表示两个可选的字段。

在工作中,仅仅这一点就足以让我实现一个Protobuf替换系统,因为我们真的想要工会。

票数 -10
EN

Stack Overflow用户

发布于 2016-10-14 18:15:06

在protobuf中有一个专门的结构(虽然我在C++中使用它,但不确定它是否能在纯C中工作):

代码语言:javascript
复制
message MyUnion {
    oneof MyUnionOneof {
        bool booleanValue = 1;
        string stringValue = 2;
    }
}

请查看此链接:https://developers.google.com/protocol-buffers/docs/proto#oneof

票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35916707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档