代码之家  ›  专栏  ›  技术社区  ›  Luis Miguel Serrano

C++支持的面向方面编程

  •  5
  • Luis Miguel Serrano  · 技术社区  · 14 年前

    我以前使用AspectJ作为Java,最近我想到了检查C++语言存在的可能性。

    我听说了 AspectC++ 但是,与AspectJ不同的是,Aspect++似乎被抛弃了,因为最新的发布日期是从21.12 2005年,根据他们的网站。

    我想知道现在是否有更多的替代品正在使用或开发,它们仍然受支持,并且有持续的更新和发展,以及是否有这样的替代品碰巧有某种集成插件,以便在EclipseIDE中更容易使用。

    在不存在的情况下,在考虑使用它之前,我是否应该注意到APETCT++的一些有问题的局限性?

    提前谢谢。

    2 回复  |  直到 14 年前
        1
  •  7
  •   Ira Baxter    7 年前

    AsPcTc++是一个值得尝试的尝试,但大学项目并不经常继续下去,因为产品往往不健全,原有的学者失去兴趣,研究生们也会继续前进。我在2010年写这个答案的时候似乎就是这样。令我惊讶的是,在2017,APETCT++似乎仍然有着积极的发展。如果你愿意 只是 C++方面,这大概值得一看。

    面向方面编程是一种特殊的程序转换(“ 找到与此条件匹配的位置(“切入点”)并对该位置的代码执行此操作 "). 所以,如果你有一个程序转换工具,你可以很容易地模拟AOP。要在C++上进行转换,需要一个强大的C++前端以及转换和再生代码的能力。OpenC++是一个进行C++转换的项目,其中转换被纯编码为具有AST程序修改的过程AST流程。一个特定的问题涉及到C++的哪种方言被OpenC++处理;特别是,我不确定C++的OpenC++处理模板或完全通用的方言(GCC,MS);然而,我没有直接的经验,只是这些工具的狂热狂热。

    我们的 DMS Software Reengineering Toolkit 是由语言定义参数化的通用程序转换。它有 robust definitions for GCC and MS dialects of C++ . 您可以像OpenC++那样实现程序上的转换,或者更方便地编写源到源模式的转换(或者更通常地,混合这些来实现复杂的效果)。DMS已被用于大规模C++代码的大规模重组 (见 Case study: Re-engineering C++ component models via automatic program transformation ). DMS是积极维护的,但它是商业的。

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

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