맨위로가기

AspectC++

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

AspectC++는 C++ 언어의 측면 지향 프로그래밍(AOP)을 구현하기 위한 확장이다. 특정 기능 호출을 추적하는 예시를 통해, AspectC++은 '조인 포인트' API를 제공하여 호출된 함수의 이름과 같은 조인 포인트 정보를 제공하고 접근할 수 있게 한다. 또한 컴파일 시간 유형 정보를 제공하여 측면 내에서 메소드 또는 함수의 인수 유형이나 값, 반환 유형 및 반환 값에 액세스할 수 있도록 한다.

더 읽어볼만한 페이지

  • C++ 프로그래밍 언어 계열 - C++/CLI
    C++/CLI는 .NET 환경에서 관리 코드와 네이티브 코드의 혼합 사용을 위해 C++ 언어를 확장한 것으로, .NET 객체 생성, 핸들, 추적 참조 등의 구문을 제공하며 C# 등 다른 .NET 언어와의 상호 운용성을 지원한다.
  • C++ 프로그래밍 언어 계열 - C++/CX
    C++/CX는 Windows 런타임 프로그래밍을 위해 C++ 언어를 확장한 것으로, WinRT 객체 생성에 `ref new`를 사용하고, 참조 포인터(`^`)를 활용하며, 다른 언어와의 코드 공유를 위해 메타데이터를 통해 클래스와 멤버를 노출한다.
  • 관점 지향 프로그래밍 - Nemerle
    Nemerle은 객체 지향 및 함수형 프로그래밍 스타일을 혼합하여 사용할 수 있는 프로그래밍 언어이며, 강력한 형식 추론, 메타프로그래밍 시스템, 다양한 프로그래밍 스타일 지원, .NET 플랫폼 라이브러리 접근 용이성 등의 특징을 갖는다.
  • 관점 지향 프로그래밍 - DTrace
    DTrace는 시스템과 애플리케이션의 실시간 동작 추적 및 분석을 위한 동적 트레이싱 프레임워크로, 'D' 언어를 사용하여 작성된 스크립트를 통해 다양한 시스템 이벤트 계측 및 분석을 지원하며 여러 운영체제에 적용되어 시스템 분석 및 문제 해결에 기여한다.
AspectC++ - [IT 관련 정보]에 관한 문서
기본 정보
이름AspectC++ 컴파일러
개발자올라프 슈핀치크 (프로젝트 리더), 게오르크 블라슈케, 크리스토프 보르헤르트, 베냐민 크라머, 다니엘 로만, 호르스트 시르마이어, 우테 슈핀치크, 라인하르트 타틀러, 마티아스 어반
발표일2001년 11월 6일
최신 버전2.3
최신 버전 발표일2021년 2월 17일
프로그래밍 언어C++
운영 체제크로스 플랫폼
장르소스 대 소스 컴파일러
라이선스GPL 2+
웹사이트AspectC++ 공식 웹사이트

2. 예

AOP의 핵심 개념 중 하나인 애스펙트(aspect)를 사용하면 특정 기능에 대한 호출을 추적할 수 있다. 예를 들어, `Tracer` 애스펙트는 `%Iter::Reset` 호출 이전에 메시지를 출력한다. 여기서 `%Iter`는 `Iter`로 끝나는 모든 클래스를 의미한다.[1]

소스 코드에서 '일치하는' 각 위치는 조인 포인트라고 하며, 어드바이스는 해당 코드와 결합된다. AspectC++는 조인 포인트 API를 제공하여 이러한 조인 포인트에 대한 정보를 제공하고 접근할 수 있게 한다.[1]

2. 1. AspectJ 코드 예제

aspectj

aspect Tracer

{

advice call("% %Iter::Reset(...)") : before()

{

cerr << "about to call Iter::Reset for " << JoinPoint::signature() << endl;

}

};

```

Tracer 애스펙트는 `Iter`로 끝나는 모든 클래스의 `Reset` 함수가 호출되기 전에 메시지를 출력한다. `%Iter` 문법은 `Iter`로 끝나는 모든 클래스를 의미한다.

소스 코드 내에서 각각의 '일치된' 위치는 조인 포인트라고 부르며, 어드바이스는 해당 코드와 결합된다. AspectC++는 조인 포인트 API를 제공하여 해당 조인 포인트에 대한 정보를 제공하고 접근할 수 있게 한다. 예를 들어 다음 함수는,

```cpp

JoinPoint::signature()

```

호출될 함수의 이름(`%Iter::Reset`와 일치되는)을 반환한다.[1]

2. 2. 조인 포인트 API

AspectC++는 조인 포인트 API를 제공하여 조인 포인트에 대한 정보에 접근할 수 있게 한다. 예를 들어 `JoinPoint::signature()` 함수는 호출될 함수의 이름(`%Iter::Reset`과 일치하는)을 반환한다.[1]

조인 포인트 API는 또한 애스펙트 내에서 메서드 또는 함수의 인수 유형이나 값, 반환 유형 및 반환 값에 접근하는 데 사용할 수 있는 컴파일 시간 유형 정보를 제공한다.[1]

2. 3. 컴파일 타임 정보

조인 지점 API는 측면 내에서 메소드 또는 함수의 인수 유형이나 값, 반환 유형 및 반환 값에 접근할 수 있는 컴파일 시간 유형 정보를 제공한다.[1]

참조

[1] 웹사이트 AspectC++ Contact http://www.aspectc.o[...]
[2] 웹사이트 NetBeat Webhosting - www.netbeat.de http://www.aspectc.o[...]
[3] AOSD Home - AOSD.net http://www.aosd.net
[4] URL http://www.aspectc.o[...]
[5] URL http://www.aspectc.o[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com