|   |      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 | 
|  | wavesinaroom · 断言结构向量长度 9 月前 | 
|   | fghoussen · 在C结构体中,为什么打包、对齐似乎会进行填充? 1 年前 | 
|   | kamkow1 · 匿名结构的初始值设定项错误无效 1 年前 |