dar*_*nir 4 c protocol-buffers
我有一个 Protobuf 协议文件,看起来像这样:
message Foo {
message Bar {
required string name = 1;
required string value = 2;
}
message Baz {
required Bar a = 1;
}
}
Run Code Online (Sandbox Code Playgroud)
鉴于此协议文件,我需要使用 protobuf-c(Protobuf 的 C 扩展)编写编码器。我写了以下代码:
Foo myfoo = FOO__INIT;
Foo__Bar mybar = FOO__BAR__INIT;
Foo__Baz mybaz = FOO__BAZ__INIT;
mybaz.a = &mybar;
Run Code Online (Sandbox Code Playgroud)
但是,我在这一点上被困在如何序列化mybaz. 为 Foo 生成的结构不包含我可以分配mybaz给的任何条目。并且没有生成直接打包Baz的方法。
在 Python 中,这要简单得多,因为mybaz.SerializeToString()已经生成了一个函数。我应该如何在 C 中解决这个问题?
在 Protocol Buffers 中声明嵌套类型就像在 C++ 中声明嵌套类或static在 Java 中声明内部类。这只是声明了一个新类型;它不会向外部类型添加字段。所以,在你的原型模式中,Foo是一个完全空的消息——它没有字段。无论您使用哪种编程语言,这都是正确的。
可能你的意思是这样的:
message Foo {
message Bar {
required string name = 1;
required string value = 2;
}
message Baz {
required Bar a = 1;
}
optional Baz baz = 1;
}
Run Code Online (Sandbox Code Playgroud)
现在Foo有一个调用的字段baz,您可以在其中分配一个Baz对象。
| 归档时间: |
|
| 查看次数: |
5735 次 |
| 最近记录: |