pointers_to_members
pragma
C++ 특정
클래스 멤버에 대한 포인터를 연결된 클래스 정의 전에 선언할 수 있는지 여부를 지정합니다. 포인터 크기와 포인터를 해석하는 데 필요한 코드를 제어하는 데 사용됩니다.
구문
#pragma pointers_to_members( best_case )
#pragma pointers_to_members( full_generality
[,
most-general-representation
])
설명
또는 , /vms
/vmv
컴파일러 옵션 또는 Microsoft 관련 상속 키워드를 사용하는 /vmm
/vmb
/vmg
대신 원본 파일에 배치 pointers_to_members
pragma 할 수 있습니다.
포인터 선언 인수는 연결된 함수 정의 전후에 멤버에 대한 포인터를 선언했는지 여부를 지정합니다. 인수는 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_members
pragma 하는 것이 좋습니다. 이렇게 하면 다른 파일에 영향을 줄 pragma 위험이 줄어들고 동일한 변수, 함수 또는 클래스 이름에 대해 여러 정의를 실수로 지정할 수 있습니다.
예시
// Specify single-inheritance only
#pragma pointers_to_members( full_generality, single_inheritance )
END C++ 특정