__declspec

Microsoft 전용

저장소 클래스 정보 사용 하 여 지정 하는 확장된 특성 구문은 __declspec 지정 된 형식의 인스턴스를 아래에 나열 된 Microsoft 특정 저장소 클래스 특성에 저장 되도록 지정 하는 키워드입니다.다른 저장소 클래스 한정자의 예로 static 및 extern 키워드입니다.그러나 이러한 키워드 ANSI C 및 C++ 언어 사양 이며 같은 확장된 특성 구문에서 다루지 않습니다.확장된 특성 구문은 간단 하 Microsoft 고유의 확장을 C 및 C++ 언어를 표준화 합니다.

문법

  • decl 지정 자가:
    __declspec ( 확장 기능 (list decl)-한정자-seq)

  • 확장 기능 (list decl)-한정자-seq:
    확장 decl 한정자선택

    확장 decl 한정자 확장-decl-한정자-seq

  • 확장 decl 한정자:
    align(#)

    allocate("segname")

    appdomain

    deprecated

    dllimport

    dllexport

    jitintrinsic

    naked

    noalias

    noinline

    noreturn

    nothrow

    novtable

    process

    property({get=get_func_name|,put=put_func_name})

    restrict

    safebuffers

    selectany

    thread

    uuid("ComObjectGUID")

공백 한정자 선언 순서를 구분합니다.예제 뒷부분의 섹션에서 표시 됩니다.

확장된 특성 문법 지원 다음 Microsoft 저장소 클래스 특성: 맞춤, 할당, appdomain, 사용 되지 않는, >dllexport, dllimport, jitintrinsic, naked, 별칭, noinline, noreturn, nothrow, novtable, 프로세스, 제한, safebuffers, selectany, 및 스레드.또한 이러한 COM 개체 특성을 지원 합니다. 속성uuid.

dllexport, dllimport, naked, noalias, nothrow, property, restrict, selectany, thread, 및 uuid 저장소 클래스 특성의 개체나 함수가 적용 되는 속성입니다.thread 특성 데이터를 영향을 주며 개체만 있습니다.naked 특성 함수에만 영향을 줍니다.dllimport 및 dllexport 특성 함수, 데이터 및 개체에 영향을 줍니다.property, selectany, 및 uuid 특성이 COM 개체에 영향을 줍니다.

__declspec 간단한 선언 시작 부분에 키워드를 배치 해야 합니다.컴파일러에 어떤 경고 하지 않고 무시 __declspec 키워드 배치 후 * 또는 & 선언에서 변수 식별자 앞에 하 고 있습니다.

A __declspec 사용자 정의 형식 선언의 시작 부분에 지정 된 특성은 해당 형식의 변수에 적용 됩니다.예를 들면 다음과 같습니다.

__declspec(dllimport) class X {} varX;

이 경우 특성에 적용 됩니다 varX.A __declspec 특성 뒤에 class 또는 struct 키워드는 사용자 정의 형식에 적용 됩니다.예를 들면 다음과 같습니다.

class __declspec(dllimport) X {};

이 경우 특성에 적용 됩니다 X.

일반 지침을 사용 하 여 __declspec 간단한 선언에 대 한 특성은 다음과 같습니다:

decl-specifier-seq declarator-list;

(List decl)-지정자-seq , 특히 기본 형식 (예: 포함intfloat, 한 typedef, 또는 클래스 이름)에 저장소 클래스 (예:static, extern), or the __declspec extension.해당 init 선언 자 목록 , 특히 포인터 선언 부분 포함 되어 있어야 합니다.예를 들면 다음과 같습니다.

__declspec(selectany) int * pi1 = 0;   //OK, selectany & int both part of decl-specifier
int __declspec(selectany) * pi2 = 0;   //OK, selectany & int both part of decl-specifier
int * __declspec(selectany) pi3 = 0;   //ERROR, selectany is not part of a declarator

다음 코드는 정수 스레드 로컬 변수를 선언 하 고 값으로 초기화 합니다.

// Example of the __declspec keyword
__declspec( thread ) int tls_i = 1;

참고 항목

참조

C + + 키워드

확장 된 저장소 클래스 특성 c