pointers_to_members pragma

C++ 특정

클래스 멤버에 대한 포인터를 연결된 클래스 정의 전에 선언할 수 있는지 여부를 지정합니다. 포인터 크기와 포인터를 해석하는 데 필요한 코드를 제어하는 데 사용됩니다.

구문

#pragma pointers_to_members( best_case )
#pragma pointers_to_members( full_generality [ ,most-general-representation ] )

설명

소스 파일에서 컴파일러 옵션 또는 Microsoft 관련 상속 키워드(keyword) 사용하거나 /vmm/vmg, 또는, 또는 , /vmv/vms 를 사용하는/vmb대신에 배치pragmapointers_to_members할 수 있습니다.

포인터 선언 인수는 연결된 함수 정의 전후에 멤버에 대한 포인터를 선언했는지 여부를 지정합니다. 인수는 pointer-declaration 다음 두 기호 중 하나입니다.

  • full_generality
    안전하며 때로 최적이 아닌 코드를 생성합니다. 연결된 클래스 정의 앞에 멤버에 대한 포인터가 선언된 경우 사용합니다 full_generality . 이 인수는 항상 인수로 지정된 포인터 표현을 most-general-representation 사용합니다. /vmg과 동일합니다.

  • best_case
    멤버에 대한 모든 포인터에 대해 최상의 표현을 사용하여 최적의 코드를 생성합니다. 멤버에 대한 포인터를 선언하기 전에 클래스를 정의해야 합니다. 기본값은 best_case입니다.

인수는 most-general-representation 컴파일러가 변환 단위의 클래스 멤버에 대한 포인터를 안전하게 참조하는 데 사용해야 하는 가장 작은 포인터 표현을 지정합니다. 인수는 다음 값 중 하나일 수 있습니다.

  • single_inheritance
    가장 일반적인 표현은 멤버 함수에 대한 단일 상속 포인터입니다. /vmg /vms과 동일합니다. 클래스 정의의 상속 모델이 다중 또는 가상인 경우 오류가 발생합니다.

  • multiple_inheritance
    가장 일반적인 표현은 멤버 함수에 대한 다중 상속 포인터입니다. /vmg /vmm과 동일합니다. 클래스 정의의 상속 모델이 가상인 경우 오류가 발생합니다.

  • virtual_inheritance
    가장 일반적인 표현은 멤버 함수에 대한 가상 상속 포인터입니다. /vmg /vmv과 동일합니다. 오류를 생성하지 않습니다. virtual_inheritance 는 사용되는 경우 #pragma pointers_to_members(full_generality) 기본 인수입니다.

주의

영향을 주려는 소스 코드 파일에만 지시문 후에 #include 만 배치 pointers_to_memberspragma 하는 것이 좋습니다. 이렇게 하면 다른 파일에 영향을 줄 pragma 위험이 줄어들고 동일한 변수, 함수 또는 클래스 이름에 대해 여러 정의를 실수로 지정할 수 있습니다.

예시

//   Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )

END C++ 특정

참고 항목

Pragma 지시문 및 __pragma_Pragma 키워드(keyword)