Sph*_*and 10 c protocol-buffers
我目前正在尝试使用Google Protocol Buffers for C语言.我不太确定如何使用GPB创建C联合.
例如,使用proto文件如下:
message msgToSend
{
required Type msg_type=1; //Type is a predefined enum to determine message type
optional ReqMsg1 msg1=2;
optional ReqMsg2 msg2=3;
}
Run Code Online (Sandbox Code Playgroud)
我期望上面生成一个union编译,但生成的结构如下:
struct _msgToSend
{
ProtobufCMessage base;
Type msg_type;
ReqMsg1 msg1;
ReqMsg2 msg2;
}
Run Code Online (Sandbox Code Playgroud)
Qua*_*rra 22
在protobuf中有一个专门的结构(我在C++中使用它,但不确定它是否适用于纯C):
message MyUnion {
oneof MyUnionOneof {
bool booleanValue = 1;
string stringValue = 2;
}
}
Run Code Online (Sandbox Code Playgroud)
请查看以下链接:https://developers.google.com/protocol-buffers/docs/proto#oneof
unw*_*ind -12
我认为你不能。
在 Protobuf 中,“可选”并不意味着像 C 联合体那样“要么是这个,要么是另一个”;它的意思是“这可能在这里”。这就是为什么您会得到一个可以表示存在的两个可选字段的 C 结构。
在工作中,仅此一点就足以让我实现 Protobuf 替代系统,因为我们真的想要工会。