基于模板的C / C ++代码生成

时间:2012-08-24 14:30:20

标签: c code-generation

有关C / C ++模板基本代码生成器的任何建议,专门用于生成重复代码生成吗? (不是基于UML / MATLAB模型或其他高级的东西)。对于这个领域的新手任何好的通用教程(不是基于工具)?

我遇到GNU Autogen看起来不错,但看起来需要一个陡峭的学习曲线。我更喜欢像IDE一样的eclipse插件,易于使用,最重要的是很好的教程。

5 个答案:

答案 0 :(得分:11)

代码生成的基本概念很简单 - 人们的需求变化很大 - 那里有很多选择。

  • Boost.Preprocessor是一个基于标准C / C ++预处理器构建的函数库,使得使用预处理器更容易进行代码生成。它不像其他选项那样灵活,并且弄清楚预处理器错误可能很棘手,但它只使用标准语言功能这一事实大大简化了它的使用并将其集成到您的构建中。
  • 如果您了解Python,那就是Cog
  • Google的部分项目使用Pump
  • 有许多通用的模板解决方案(Python的GenshieRuby等)。这些通常用于生成HTML和XML,但也适用于代码。
  • 使用您选择的脚本语言一起破解某些内容也很容易。

如果不了解您的需求以及您认为适合的工具,我无法提供更具体的建议。

我不熟悉提供Eclipse插件的任何内容。

答案 1 :(得分:3)

如果您了解Python,那么可以将Cog视为轻量级解决方案:http://www.python.org/about/success/cog/

答案 2 :(得分:1)

使用M2T-JET(基于eclipse的轻量级模板生成器)查看Java classes类似问题的答案。 JET与语言无关,您可以从示例中看出它相当容易使用。

答案 3 :(得分:1)

我很欣赏使用Lua执行此任务,例如Templet或其他无数基于Lua的预处理器。使用Lua而不是Python之类的好处是,如果需要,您可以将源代码包含在模板处理器中,并将基本的Lua安装以及随附的内容包含在内。然后,您可以像往常一样将Lua和后续模板文件的编译添加到构建过程中。

我建议不要使用基于Python的解决方案,原因之一是:处理各种蟒蛇以满足每个开发人员对完全不同但不兼容的版本的使用是令人讨厌的。如果您选择使用不能嵌入树中的语言,那么您需要确保预先计算的版本可用。

答案 4 :(得分:0)

晚会,但我会推荐Codeworker它是我发现的唯一工具,可以完成上述工具所做的一切以及更多工作。它具有嵌入式生成的Python Cog功能,它具有基于模板的生成,如Templet或Pump。它具有相当有用的保护区功能,因此您可以根据需要自定义代码并重新生成。

我用它来生成所有的锅炉板c ++代码以及SQL,config,javascript等项目的配置。