다음을 통해 공유


런타임 플랫폼의 구성 요소 확장

Visual C++는 런타임 프로그램에 대한 프로그램을 도우기 위한 언어 확장 프로그램을 제공 합니다. Visual C++ 구성 요소 확장 (C++/CX) 을 사용하면 Windows 스토어 응용 프로그램 및 네이티브 코드로 컴파일되는 구성 요소를 프로그래밍할 수 있습니다. 비록 Windows 스토어 응용 프로그램을 Windows 런타임 COM 인터페이스에 대한 직접적인 프로그래밍으로 만들 수는 있다 하더라도, C++/CX 사용하면 생성자, 예외 및 기타 최신 C++ 프로그래밍 구문과 함께 작업할 수 있습니다. .NET 플랫폼의 관리된 실행 환경에서 C++ 프로그래밍을 사용하려면, C++/CLI 을 사용합니다.

하나의 확장 집합안의 두 개의 런타임

C++/CX은 C++/CLI의 하위 집합입니다. C++/CX 및 C++/CLI 에 대한 공통된 확장들에서 의미 체계는 공용 언어 런타임(CLR) 또는 Windows 런타임 중 어느것을 대상으로 하는지에 따라 달라 집니다. 응용 프로그램이 Windows 런타임 에서 실행 되도록 컴파일하려면 컴파일러 옵션에서 /ZW 을 지정합니다. CLR에서 실행되도록 컴파일하려면 컴파일러 옵션에서 /clr 을 지정합니다. 이러한 스위치는 Visual Studio 사용하여 프로젝트를 만들 때 자동으로 설정 됩니다.

C++로 Windows 스토어 응용 프로그램을 만드는 방법에 대한 자세한 내용은 Roadmap for Windows Store apps using C++ 을 참조하십시오.

C++/CLI 은 ISO/ANSI C++ 표준을 포함하고 Ecma C++/CLI 표준에 의해 정의됩니다. 자세한 내용은 Visual C++의 .NET 프로그래밍을 참조하십시오.

데이터 형식 키워드

언어 확장은 공백으로 구분된 두 개의 토큰으로 구성 된 키워드인 집계 키워드 를 포함합니다. 토큰은 개별적으로 사용되는 경우 한가지 의미를 가지고, 함께 사용될 때는 다른 의미를 가지게 됩니다. 예를 들어, 단어 "ref"는 일반 식별자이며 "class" 라는 단어는 네이티브 클래스를 선언하는 키워드입니다. 하지만 이 단어이 결합하여 ref class 를 이룰 때, 결과 집계 키워드는 런타임 클래스 엔터티를 선언합니다.

확장명은 상황에 민감한 키워드입니다. 키워드는 이것은 키워드와 해당 문의 위치를 포함하는 문의 종류에 따라 그 상황에 따라 달라지고 컨텍스트에 민감합니다. 예를 들어, "속성" 토큰은 식별자일 수 있고, 특수한 공용 클래스 멤버 종류를 선언할 수 있습니다.

다음 표에서 C++ 언어 확장에서의 키워드를 보여줍니다.

키워드

컨텍스트에 민감한

용도

참고 항목

ref class

ref struct

아니요

클래스를 선언합니다.

클래스 및 구조체(C++ 구성 요소 확장)

value class

value struct

아니요

값 클래스를 선언합니다.

클래스 및 구조체(C++ 구성 요소 확장)

interface class

interface struct

아니요

인터페이스를 선언합니다.

interface 클래스(C++ 구성 요소 확장)

enum class

enum struct

아니요

열거형을 선언합니다.

enum 클래스(C++ 구성 요소 확장)

property

속성을 선언합니다.

속성(C++ 구성 요소 확장)

delegate

대리자를 선언합니다

delegate(C++ 구성 요소 확장)

event

이벤트를 선언합니다.

event(C++ 구성 요소 확장)

지정자를 재정의합니다.

파생에 대한 재정의 동작을 수식하기 위해 다음과 같은 키워드를 사용할 수 있습니다. 비록 new 키워드가 C++ 의 확장명이 아니더라도, 추가 컨텍스트를 사용할 수 있기 때문에 여기 나열 됩니다. 일부 지정자들은 네이티브 프로그래밍에 사용할 수도 있습니다. 자세한 내용은 방법: 네이티브 컴파일에 재정의 지정자를 선언을 참조하십시오.

키워드

컨텍스트에 민감한

용도

참고 항목

abstract

함수나 클래스는 추상적이라는 것을 나타냅니다.

abstract(C++ 구성 요소 확장)

new

아니요

함수는 기본 클래스 버전의 재정의가 아님을 나타냅니다.

new(vtable의 새 슬롯)(C++ 구성 요소 확장)

override

메서드는 기본 클래스 버전의 재정의 이어야 함을 나타냅니다.

override(C++ 구성 요소 확장)

sealed

클래스가 기본 클래스로 사용되는 것을 예방합니다.

sealed(C++ 구성 요소 확장)

제네릭에 대한 키워드

다음 키워드들은 제네릭 형식을 지원하기 위해 추가 되었습니다. 자세한 내용은 제네릭(C++ 구성 요소 확장)을 참조하십시오.

키워드

컨텍스트에 민감한

용도

generic

아니요

제네릭 형식을 선언합니다.

where

제네릭 형식 매개 변수에 적용되는 제약 조건을 지정합니다.

기타 다양한 종류의 키워드

다음 키워드는 C++ 확장에 추가 되었습니다.

키워드

컨텍스트에 민감한

용도

참고 항목

finally

기본 예외는 동작을 처리함을 나타냅니다.

예외 처리(C++ 구성 요소 확장)

for each, in

아니요

컬렉션의 요소들을 열거합니다.

각에 대해의

gcnew

아니요

가비지 수집된 힙에 있는 형식을 할당합니다. delete 대신 new 을 사용합니다.

ref new, gcnew(C++ 구성 요소 확장)

ref new

Windows 런타임 형식을 할당합니다. delete 대신 new 을 사용합니다.

ref new, gcnew(C++ 구성 요소 확장)

initonly

멤버가 선언 또는 정적 생성자 에서만 초기화 될수 있다는 것을 나타냅니다.

initonly

literal

리터럴 변수를 만듭니다.

리터럴(C++ 구성 요소 확장)

nullptr

아니요

핸들 또는 포인터는 개체를 가리키지 않음을 나타냅니다.

nullptr(C++ 구성 요소 확장)

템플릿 구문

다음 언어 구문은 키워드 대신 서식 파일로 구현됩니다. /ZW 컴파일러 옵션을 지정하는 경우, lang 네임 스페이스에 정의됩니다. /clr 컴파일러 옵션을 지정하는 경우, cli 네임 스페이스에 정의됩니다.

키워드

용도

참고 항목

array

배열을 선언합니다.

배열(C++ 구성 요소 확장)

interior_ptr

(CLR에만 해당) 참조 형식의 데이터를 가리킵니다.

interior_ptr(C++/CLI)

pin_ptr

(CLR에만 해당) 가비지 수집 시스템을 일시적으로 표시 하려면 CLR 참조 형식을 가리킵니다.

pin_ptr(C++/CLI)

safe_cast

런타임 형식에 대한 최적의 캐스팅 메서드를 확인 및 실행합니다.

safe_cast(C++ 구성 요소 확장)

typeid

(CLR에만 해당) 주어진 형식이나 개체를 나타내는 Type 개체를 검색합니다.

typeid(C++ 구성 요소 확장)

선언자

다음 형식 선언들은 할당된 개체의 삭제 및 수명을 자동으로 관리 하도록 런타임에 지시합니다.

연산자

용도

참고 항목

^

개체에 대한 핸들을 선언합니다. 이것은 더 이상 사용할 수 없을 때 자동으로 삭제되는 Windows 런타임 또는 CLR 개체에 대한 포인터 입니다.

개체 연산자에 대한 핸들(^)(C++ 구성 요소 확장)

%

추적 참조를 선언합니다. 이것은 더 이상 사용할 수 없을 때 자동으로 삭제되는 Windows 런타임 또는 CLR 개체에 대한 참조 입니다.

추적 참조 연산자(C++ 구성 요소 확장)

추가 구문 및 관련된 항목

이 부문에서는 추가 프로그래밍 구성 및 CLR에 관련된 항목을 나열합니다.

항목

설명

__identifier(C++/CLI)

(Windows 런타임 and CLR) 키워드를 식별자로 사용할 수 있습니다.

가변 인수 목록(...)(C++/CLI)

(Windows 런타임 and CLR) 인수의 변수 번호를 취하는 함수를 사용할 수 있습니다.

C++ 네이티브 형식에 해당하는 .NET Framework(C++/CLI)

C++ 정수 계열 형식 대신에 사용되는 CLR 형식이 나와 있습니다.

appdomain __declspec 한정자

appdomain당 정적 및 전역변수를 지정하는 __declspec 한정자.

/clr을 사용한 C 스타일 캐스트(C++/CLI)

C 스타일 캐스트가 해석되는 방법을 보여줍니다.

__clrcall호출 규칙

CLR 규격 호출 규칙을 나타냅니다.

__cplusplus_cli

미리 정의된 매크로

사용자 지정 특성(C++)

사용자 고유의 CLR 특성을 정의하는 방법을 보여줍니다.

예외 처리(C++ 구성 요소 확장)

예외 처리에 대한 개요를 제공합니다.

명시적 재정의(C++ 구성 요소 확장)

멤버 함수가 수 멤버를 재정의 하는 방법을 보여줍니다.

Friend 어셈블리 (C++)

클라이언트 어셈블리를 어셈블리 구성 요소에 있는 모든 형식에 액세스할 수 있는 방법에 대해 설명 합니다.

Boxing(C++ 구성 요소 확장)

값 형식이 boxed된 상태를 보여줍니다.

형식 특성에 대한 컴파일러 지원(C++ 구성 요소 확장)

컴파일 시간에 형식의 특성을 검색하는 방법에 대해 설명합니다.

관리되는, 관리되지 않는 pragmas

관리 및 관리되지 않은 함수들이 동일한 모듈에 공존하는 방법에 대해 보여줍니다.

프로세스 __declspec 한정자

appdomain당 정적 및 전역변수를 지정하는 __declspec 한정자.

리플렉션(C++/CLI)

런타임 형식 정보의 CLR 버전을 보여줍니다.

문자열(C++ 구성 요소 확장)

문자열 리터럴에서 String 로의 컴파일러 변환에 대해 설명합니다.

형식 전달(C++/CLI)

운송 어셈블리에서 다른 어셈블리로의 형식의 이동을 사용하여 클라이언트 코드가 다시 컴파일될 필요가 없도록 할 수 있습니다.

사용자 정의 특성(C++ 구성 요소 확장)

사용자 정의 특성을 보여줍니다.

#using 지시문 (C++)

외부 어셈블리를 가져옵니다.

XML 문서(Visual C++)

/doc(문서 주석 처리)(C/C++) 를 사용하여 XML 기반 코드 설명서를 설명합니다.

참고 항목

기타 리소스

Visual C++의 .NET 프로그래밍

네이티브 및 .NET 상호 운용성