【发布时间】:2012-11-27 22:36:11
【问题描述】:
我想生成头文件中定义的过程的空实现。理想情况下,它们应该为指针返回 NULL,为整数等返回 0,并且在理想情况下,还打印到 stderr 调用了哪个函数。
这样做的动机是需要实现一个包装器,该包装器将一个复杂的现有 API(头文件)的子集适应另一个库。 API中只有少数过程需要委托,但不清楚哪些。所以我希望使用一种迭代的方法,在这个自动生成的包装器上运行,看看调用了什么,用委托实现它,然后重复。
我见过Automatically generate C++ file from header?,但答案似乎是特定于 C++ 的。
那么,对于需要简单说明问题的人,如何在给定头文件的情况下自动生成这样的实现?我更喜欢现有的工具 - 我目前对简单解决方案的最佳猜测是使用 pycparser。
更新谢谢大家。两个很好的答案。还发布了我当前的 hack。
【问题讨论】:
-
现在,据我所知,您还没有真正问过问题,但我猜您要求的是可以做到这一点的现有工具?不幸的是我不知道任何工具,但它听起来足够基本,可以快速实现 python(或任何其他高级语言)来解决它?
-
我已经澄清了这个问题。是的,我可以编写一个程序来做到这一点。但这并不是微不足道的——例如,它需要一个体面的解析器。标头足够大,也足够复杂,以至于基于正则表达式的临时拼凑将是一个耗时的混乱。
-
嗨,这个过程需要容易重复吗?例如,您希望能够在 API 的新版本发布时更新存根实现吗?
-
哦,好问题。不,这没有必要(如果是这样会更好,但我可以看到它使事情变得更加复杂,而且它是一个不太可能发生重大变化的标准 API)。
-
如果您对脚本编写感到满意,也许您可以编写自己的工具?这看起来像是正则表达式可以处理的相对简单的任务......
标签: c code-generation