C++/CX
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
C++/CX는 Windows 런타임을 위한 프로그래밍을 위해 도입된 C++ 언어의 확장이다. C++11 표준과 호환되며, `ref new` 키워드를 사용하여 WinRT 객체를 생성하고, 참조 포인터(`^`)를 사용한다. 클래스 정의를 여러 파일로 분할하는 `partial` 키워드와 런타임 기반 동적 제네릭을 지원하며, 메타데이터를 통해 클래스와 멤버를 노출하여 다른 언어와의 코드 공유를 가능하게 한다. 또한, C++ 표준 라이브러리와 WinRT 기능을 연결하는 런타임 라이브러리를 제공하며, `__cplusplus_winrt` 전처리기 기호를 통해 C++/CX 확장을 감지할 수 있다.
C++/CX는 윈도 런타임 프로그래밍을 위한 구문 확장을 도입했지만, 전반적인 플랫폼 독립적 구문은 C++11 표준과 호환되도록 설계되었다.
모든 WinRT 프로그램은 선언된 클래스와 멤버를 메타데이터를 통해 노출한다. 이 형식은 .NET 프레임워크에서 만들어진 표준인 공용 언어 인프라(CLI)의 일부로 표준화된 것과 동일하다. 이 때문에 C++/CX, CLI 언어, 그리고 윈도우 런타임을 대상으로 하는 JavaScript 간에 코드를 공유할 수 있다.
C++/CX는 Windows 런타임을 대상으로 하는 일련의 라이브러리를 가지고 있다. 이는 C++ 표준 라이브러리와 WinRT의 기능을 연결하는 데 도움을 준다.
`__cplusplus_winrt` 전처리기 기호를 사용하여 C++/CX 확장이 켜져 있는지 확인할 수 있다.
2. 구문 변화
2. 1. 객체 생성
WinRT 객체는 C++/CLI에서 상속된 `^` (hat) 표기법으로 선언된 변수에 할당되고 `ref new`를 사용하여 생성, 즉 '활성화'된다.
```cpp
Foo^ foo = ref new Foo();
```
WinRT 변수는 가상 메서드 테이블에 대한 포인터와 객체의 내부 데이터에 대한 포인터 쌍이다. WinRT 객체는 참조 계수를 사용하며, 따라서 shared_ptr로 감싼 일반적인 C++ 객체와 유사하게 처리된다. 객체는 해당 객체를 가리키는 참조가 더 이상 없을 때 삭제된다.
가비지 컬렉션은 관여하지 않는다. 그럼에도 불구하고, 키워드 `gcnew`는 미래에 사용될 가능성을 위해 예약되어 있다.
참조 포인터 `^`는 CLI와 같으나 `gcnew`를 사용하지 않고 신규 키워드 `ref new`를 사용한다.
C++/CLI
```cpp
Obj^ obj = gcnew Obj();
```
C++/CX
```cpp
Obj^ obj = ref new Obj();
2. 2. 클래스 파일 분리
cpp
// test.internal.h
partial ref class Test
{
private:
int _priv_num;
};
```
```cpp
// test.h
#include "test.internal.h"
ref class Test
{
public:
int GetNumber();
};
```
```cpp
// test.cpp
#include "pch.h"
#include "test.h"
int Test::GetNumber()
{
return _priv_num;
}
```
`partial` 키워드를 사용하여 클래스 정의를 여러 파일로 나눌 수 있다. 이는 코드 구성을 개선하고 대규모 프로젝트 관리에 유용하다.
2. 3. 런타임 제네릭
C++/CX는 윈도우 런타임의 런타임 기반 동적 제네릭을 지원한다.
```cpp
generic
public ref class bag
{
property T Item;
};
```
윈도 런타임 및 C++/CX는 런타임 기반 제네릭을 지원한다. 제네릭 형식 정보는 메타데이터에 포함되어 런타임에 인스턴스화된다. 이는 컴파일 시점에 구성되는 C++ 템플릿과는 대조적이다. 이 두 가지는 모두 컴파일러에서 지원하며 결합하여 사용할 수 있다.
3. 메타데이터
4. 런타임 라이브러리
5. 전처리기 기반 감지
```cpp
#ifdef __cplusplus_winrt
// C++/CX 관련 코드가 여기에 있습니다...
#endif
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com