首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C中的注释/反射/代码元数据有可靠的解决方案吗?

C中的注释/反射/代码元数据有可靠的解决方案吗?
EN

Software Engineering用户
提问于 2012-11-15 15:01:58
回答 2查看 1.1K关注 0票数 7

并非所有语言都支持类似java的注释或C#类属性或代码元数据,但这并不意味着不可能在没有java类注释的语言中使用。

一个例子是带有存根主义注释库的PHP。

我的问题是,对于C有类似的东西吗?还是有任何可靠的方法可以用C中的扩展代码元数据来进行反射?

理想情况下,我正在寻找类似javadoc的注释。

编辑:我之所以需要*而不是仅仅想要,是因为我需要从数据库中生成C代码和代码元数据,以及能够编辑元数据和更新数据库。工作量(从该数据库生成的变量/结构/函数)证明了该解决方案的合理性。

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2012-11-22 11:43:42

我能想到的最接近的事情是MetaC:

http://www.maier-komor.de/metac/

(几天前FrustratedWithFormsDesigner已经提到)

撇开这一点不说,还有许多基于C预处理器的其他系统可以用于(或滥用)这项任务。看一看Boost.Preprocessor,例如:

http://www.boost.org/doc/libs/1_52_0/libs/preprocessor/doc/index.html

或者P99和ABCPP:

http://p99.gforge.inria.fr/

http://code.google.com/p/abcpp/

尽管如此,我强烈建议您为这项任务使用某种成熟的代码生成工具(正如Brian已经做的那样)。

所有上述基于预处理的工具,在最后,都是执行某种代码生成的复杂方式。你可以直接实现你自己的成熟的,行为良好的代码生成工具。Ruby、Python和Perl为此提供了许多很好的工具。例如,Ruby有自己的建模和代码生成框架:

http://ruby-gen.org/

http://rgen.rubyforge.org/

许多其他脚本语言存在于其他脚本语言中。您甚至可以使用通常用于开发web应用程序的模板引擎,如Cheetah (基于Python):

http://www.cheetahtemplate.org/

还请看一下通用的基于Ruby的WLang框架:

https://www.ruby-toolbox.com/projects/wlang

使用通用脚本语言和代码生成框架,您将最终开发一个真正的独立应用程序,该应用程序将查询您的DB并生成相应的元数据和代码。它看起来像一个庞大而复杂的解决方案,但实际上它比基于预处理器的解决方案更易于编写和维护(因为成熟的脚本语言比C预处理器强大得多,灵活得多)。

此外,从您的“功能请求列表”中,我感觉到现有的基于预处理的工具都不能像现在这样用于您的任务,因为C预处理器无法轻松地处理DB,而且您的任务很可能需要一个两次传递的进程(一个用于查询DB并生成所需的元数据,另一个用于从元数据生成C代码)。

这可能是使用一种成熟的脚本语言的另一个原因。

票数 3
EN

Software Engineering用户

发布于 2012-11-15 19:55:57

你考虑过生成代码吗??

属性及其相关行为只是代码,如果您可以展开它们的话。这将需要大量的设置,但你将完全控制。如果你是从数据库中生成的,我认为你有一个非常强大的案例--这就是ORMs所做的。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/175959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档