![]() |
1
4
至少在一般情况下不是。但是,如果C模块是用调试符号编译的,并且对象模块是可用的,那么您可以分析它并发现结构的所有内容。我敢打赌你的系统一定有一个库来帮助你。 |
![]() |
2
2
遇到同样的问题,我自己写了一篇。 https://github.com/jamie-pate/jstruct 是的。编写它是为了允许对现有的c结构进行注释,然后根据注释生成元数据信息。库读取元数据以将c结构导入/导出到json字符串并返回。python脚本负责解析带注释的头并生成新的头和元数据初始值设定项。jstruct库使用 https://github.com/json-c/json-c 在内部。 我也注意到了 https://github.com/marel-keytech …但那是在写了整件事之后。(而且那个项目页面上的信息很稀疏)
目前还不支持从现有系统库中注释单个结构,但可以将
如果您有使库对您更有用的想法,可以随意添加功能请求,甚至拉取请求。我的一个想法是添加一种方法来嵌入
只读
在带注释的包装器中使用
代码:
同时你也可以不用
|
![]() |
3
1
这并不能满足你的要求,但可能会有点帮助:
然后可以迭代,例如(注意:未测试;请考虑此伪代码):
你同样可以定义
再说一遍,这不是一个通用的解决方案,但它至少让你更接近,也许。 |
![]() |
4
0
tom christiansen曾经编写过pstruct/h2ph,它位于perl内核中,用于解析所用编译器中的.stabs信息,并为所有数据结构创建可读信息。 基于h2ph,将c结构转换成json非常简单。 http://perl5.git.perl.org/perl.git/blob/HEAD:/utils/h2ph.PL |
![]() |
5
0
这个宏并没有完全按照您的要求(生成c数据的json转储),但我认为它显示了一些可能性。您可以使用“p(…);”调用转储任何c数据的内容。 我使用gdb作为外部助手来实现这个功能,但是可以用libbfd实现一个。在这种情况下,您可以完全控制输出,就像生成JSON兼容的输出一样。
缩进在上面的粘贴中丢失,但您可以从以下位置获取源: https://github.com/tai/ruby-p-for-c |
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |