并非所有语言都支持类似java的注释或C#类属性或代码元数据,但这并不意味着不可能在没有java类注释的语言中使用。
一个例子是带有存根和主义注释库的PHP。
我的问题是,对于C有类似的东西吗?还是有任何可靠的方法可以用C中的扩展代码元数据来进行反射?
理想情况下,我正在寻找类似javadoc的注释。
编辑:我之所以需要*而不是仅仅想要,是因为我需要从数据库中生成C代码和代码元数据,以及能够编辑元数据和更新数据库。工作量(从该数据库生成的变量/结构/函数)证明了该解决方案的合理性。
发布于 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代码)。
这可能是使用一种成熟的脚本语言的另一个原因。
发布于 2012-11-15 19:55:57
你考虑过生成代码吗??
属性及其相关行为只是代码,如果您可以展开它们的话。这将需要大量的设置,但你将完全控制。如果你是从数据库中生成的,我认为你有一个非常强大的案例--这就是ORMs所做的。
https://softwareengineering.stackexchange.com/questions/175959
复制相似问题