【发布时间】:2012-10-15 22:50:51
【问题描述】:
我的代码目前传递了很多(有时是嵌套的)C(或 C++ 普通旧数据)结构和数组。
我想将这些转换为/从谷歌 protobufs 转换。我可以手动编写在这两种格式之间转换的代码,但自动生成这样的代码不太容易出错。做这个的最好方式是什么? (这在具有足够内省以迭代成员变量名称的语言中很容易,但这是我们正在谈论的 C++ 代码)
我正在考虑的一件事是编写解析 C 结构然后生成 .proto 文件的 python 代码,以及从成员到成员(在任一方向)复制所有类型的 C 代码,但也许有更好的方法...或者可能已经可以生成另一个 IDL:
- .h 文件包含所有嵌套类型
- .proto 文件包含等价物
- .c 文件,其中包含在 .proto 文件生成的 C++ 结构和 .h 文件中定义的结构之间复制任一方向的函数
【问题讨论】:
-
我有点迷茫,你是在传递data还是code?如果您传递的只是数据,那么任何序列化库有什么问题?如果您的数据需要用不同的语言读取,我会考虑
json或类似的东西。如果您对共享代码感兴趣,那么这完全是一个不同的问题。 ROS 使用 python 和一些库从消息中生成 C++ 类,我相信还有很多其他框架支持代码生成。你为什么使用 protobuf?
标签: c++ c data-structures protocol-buffers idl