作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个看起来像这样的 Protobuf 协议(protocol)文件:
message Foo {
message Bar {
required string name = 1;
required string value = 2;
}
message Baz {
required Bar a = 1;
}
}
Foo myfoo = FOO__INIT;
Foo__Bar mybar = FOO__BAR__INIT;
Foo__Baz mybaz = FOO__BAZ__INIT;
mybaz.a = &mybar;
mybaz
上卡住了。 .为 Foo 生成的结构不包含我可以分配的任何条目
mybaz
到。并且没有生成直接打包Baz的方法。
mybaz.SerializeToString()
函数已生成。我应该如何在 C 中解决这个问题?
最佳答案
在 Protocol Buffers 中声明嵌套类型就像在 C++ 或 static
中声明嵌套类。 Java中的内部类。这只是声明了一个新类型;它不会向外部类型添加字段。因此,在您的原型(prototype)模式中,Foo
是一个完全空的消息——它没有字段。无论您使用哪种编程语言,这都是正确的。
可能你的意思是这样的:
message Foo {
message Bar {
required string name = 1;
required string value = 2;
}
message Baz {
required Bar a = 1;
}
optional Baz baz = 1;
}
Foo
有一个名为
baz
的字段您可以在其中分配
Baz
目的。
关于c - protobuf-c : How to pack nested messages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30252276/
我是一名优秀的程序员,十分优秀!