AspectC++
"오늘의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 코드 예제
aspectjaspect 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