c - 从对象的高级定义生成 C 结构

标签 c perl auto-generate

我必须定义对象的高级定义,例如:

obj1 => [
    name => "object1",
    type => "uint64",
    dependents => [
         {type  => "unit32", name => "dep1"},
         {type  => "uint32", name => "dep2"}
    ],
    default_value = "100"
]

由此我想生成 C 结构和一些辅助例程,例如:

struct_dependents {
    int type;
    char name[MAX];
}

struct struct_obj1 {
     char name[MAX];
     int  type;
     struct dependents deps[MAX_DEP];
     unit64 default_value;
}

// Some initializations..

早些时候我认为我可以在 .pm(perl 模块)文件中定义高级对象,然后使用 perl 生成 C 代码,但是如果对象定义,以这种方式编写代码来生成 C 代码可能容易出错并且难以维护 future 的变化。

我想知道的是 - 是否有现成的工具可以让我们编写高级对象定义并自动生成它们的 C 结构?

最佳答案

C 有很多代码生成器——您更有可能找到使用 xml 等中间语法的东西;一个快速谷歌出现了xml2c .您可以使用 XML::Simple 将哈希值保存到 xml。

更多examples可以在谷歌上找到。

如果您希望推出自己的代码生成,使用模板工具包可提供 flexible方法。

关于c - 从对象的高级定义生成 C 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26332548/

相关文章:

perl - 在 vim 中正确地突出显示子例程签名

perl - 在 perl 中,这些没有印记的变量是什么?

xml - 从 PERL LibXML 解析器获取完整的 XML 字符串

c - 如何在预构建中编译自动生成的 C 文件?

android - 防止android studio在xml文件中创建多个标签

c - 强制 fgets 阻塞(即伪造 "interactive device")

c++ - C和C++的静态变量之间的区别?

android - 触发自动生成代码Android导航

c - 从数组中选择最大子数组

c - 在嵌入式系统上使用 fopen() 需要什么?