C++中面向方面编程 - 当前支持的替代方案

Lui*_*ano 5 c++ aop

我之前使用过AspectJ for Java,最近我考虑过检查C++语言存在哪些可能性.

我听说过AspectC++,但与AspectJ不同,AspectC++似乎被放弃了,因为最新版本发布于2005年12月21日,根据他们的网站.

我想知道现在是否有更新的替代方案正在使用或开发,并且仍然支持并且不断更新和发展,并且如果任何这样的替代方案碰巧有某种集成插件,以便在Eclipse IDE中更容易使用.

如果没有,在考虑使用AspectC++之前我是否应该注意一些最有问题的限制?

提前致谢.

Ira*_*ter 7

AspectC++是值得尝试的,但大学项目并不经常继续,因为产品往往不健全,原始学者失去兴趣,而构建它的研究生继续前进.当我在2010年写下这个答案时,似乎就是这种情况.令我惊讶的是,2017年,AspectC++似乎仍然有积极的发展.如果你想要C++的方面,这可能值得一看.

面向方面的编程只是一种特殊的程序转换(" 查找匹配此条件的位置('切入点')并对此处的代码执行此操作 ").因此,如果您有程序转换工具,则可以非常轻松地模拟AOP.要在C++上进行转换,您需要强大的C++前端,以及转换和重新生成代码的能力.OpenC++是一个进行C++转换的项目,其中转换纯粹是程序性的AST-walking和程序AST修改.一个特殊的问题与OpenC++处理哪种C++方言有关; 特别是,我不确定OpenC++是否处理了C +的模板或完整的普通方言(GCC,MS); 但是我没有直接经验,只是对这些工具的热心狂热.

我们的DMS软件再造工具包是一个通过语言定义参数化的通用程序转换.它具有对C++的GCC和MS方言的强大定义.您可以像OpenC++那样在程序上实现程序转换,或者更方便地编写源到源模式的转换(或者更常见的是,将它们混合以实现复杂的效果).DMS已被用于对大规模C++代码进行大规模重组(参见案例研究:通过自动程序转换重新设计C++组件模型).DMS被积极维护,但它是商业的.

编辑2015年3月:现在GCC和MS方言中的C++ 14.

编辑2017年7月:现在GCC和MS方言中的C++ 17.