AspectC++

AspectC++는 C와 C++ 언어의 관점 지향 확장이다. AspectC++ 소스 코드를 호환 C++로 번역하는 소스 대 소스 컴파일러를 보유하고 있다. 이 컴파일러는 GNU GPL 하에서 이용할 수 있으나 일부 마이크로소프트 윈도우에 특화된 확장들은 순수 시스템 GmbH를 통해서만 이용이 가능하다.

관점 지향 프로그래밍은 횡단 관심사를 하나의 모듈, 즉 관점(애스펙트, aspect)로 모듈화하는 것을 허용한다. 애스펙트는 기존의 클래스를 수정할 수 있지만 대체적으로는 기존 기능의 이전(before), 이후(after), 주변(around)에 실행할 "어드바이스"(advice)를 제공한다.

예 
특정 기능에 대한 모든 호출들은 'cerr'이나 인쇄문을 여러 곳에 삽입하지 않고 애스펙트를 사용하여 추적할 수 있다:
aspect Tracer
{
   advice call("% %Iter::Reset(...)") : before()
   {
      cerr << "about to call Iter::Reset for " << JoinPoint::signature() << endl;
   }
};

Tracer 애스펙트는 %Iter::Reset에 대한 호출 이전에 메시지를 출력한다. %Iter 문법은 Iter로 끝나는 모든 클래스와 일치시킨다는 것을 의미한다.

소스 코드 내에서 각각의 '일치된' 위치는 조인 포인트라 부르며, 어드바이스는 해당 코드와 결합된다. AspectC++은 조인 포인트 API를 제공함으로써 해당 조인 포인트에 대한 정보를 제공하고 접근할 수 있게 한다. 이를테면 다음의 함수가 있다고 하면,
JoinPoint::signature()
호출될 함수의 이름(%Iter::Reset와 일치되는)을 반환한다.

각주

외부 링크 
 AspectC++
 Articles on aspect-oriented programming and AspectC++ at past AOSD conferences

관점 지향 프로그래밍
C++ 프로그래밍 언어 계열