我目前正在尝试将Google协议缓冲区用于C语言。对于如何使用GPB创建C联合,我不确定。
例如,使用以下原始文件:
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
编译后,但生成的结构如下:
struct _msgToSend
{
ProtobufCMessage base;
Type msg_type;
ReqMsg1 msg1;
ReqMsg2 msg2;
}
我认为你不能。
在Protobuf中,“可选”并不意味着像C联合一样“是这个或另一个”。它的意思是“可能在这里”。这就是为什么您得到一个可以表示两个可选字段同时存在的C结构的原因。
在工作中,仅此一个就足以使我实现Protobuf替换系统,因为我们确实需要工会。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句