다음을 통해 공유


/vmm, /vms/vmv (범용 표현)

표현 메서드선택될 때 /vmg 사용됩니다. 이러한 옵션은 아직 발생하지 않은 클래스 정의의 상속 모델을 나타냅니다.

구문

/vmm
/vms
/vmv

옵션

/vmm
클래스의 멤버에 대한 포인터의 가장 일반적인 표현을 여러 상속을 사용하는 포인터로 지정합니다.

해당하는 상속 키워드 및 인수 #pragma pointers_to_members 는 .입니다 multiple_inheritance.

이 표현은 단일 상속에 필요한 표현보다 큽합니다.

가상 상속 모델이 있는 클래스의 멤버에 대한 포인터를 사용하고 /vmm 선언하면 컴파일러에서 오류가 발생합니다.

/vms
클래스의 멤버에 대한 포인터의 가장 일반적인 표현을 상속 또는 단일 상속을 사용하지 않는 포인터로 지정합니다. 해당하는 상속 키워드 및 인수 #pragma pointers_to_members 는 .입니다 single_inheritance.

이 옵션은 클래스의 멤버에 대한 포인터의 가능한 가장 작은 표현을 생성합니다.

다중 또는 가상 상속 모델이 있는 클래스의 멤버에 대한 포인터를 사용하고 /vms 선언하면 컴파일러에서 오류가 발생합니다.

/vmv
클래스의 멤버에 대한 포인터의 가장 일반적인 표현을 가상 상속을 사용하는 포인터로 지정합니다. 이 포인터 표현은 오류를 일으키지 않으며 기본값입니다.

해당하는 상속 키워드 및 인수 #pragma pointers_to_members 는 .입니다 virtual_inheritance.

이 옵션을 사용하려면 다른 옵션보다 포인터를 해석하는 데 더 큰 포인터와 더 많은 코드가 필요합니다.

설명

Visual Studio 2019 및 이전 버전에서 Microsoft는 포인터-멤버 형식에 다양한 표현(다양한 크기)을 사용합니다. 상속 또는 단일 상속이 없는 클래스의 멤버에 대한 포인터에는 가장 작은 표현이 있습니다. 여러 상속이 있는 클래스의 멤버에 대한 포인터가 더 큽니다. 가상 상속이 있는 클래스의 멤버에 대한 포인터가 가장 큽니다. 컴파일러에 표현 모델을 지정하지 않으면 기본적으로 가장 큰 가장 일반적인 표현을 사용합니다.

이러한 상속 모델 옵션 중 하나를 지정하면 해당 상속 형식이나 클래스 앞이나 후에 포인터를 선언하는지 여부에 관계없이 해당 모델이 클래스 멤버에 대한 모든 포인터에 사용됩니다. 항상 단일 상속 클래스를 사용하는 경우 .을 사용하여 컴파일하여 /vms코드 크기를 줄일 수 있습니다. 그러나 가장 일반적인 경우(가장 큰 데이터 표현을 희생하여)를 사용하려면 .를 사용하여 컴파일 /vmv합니다.

Visual Studio 개발 환경에서 이 컴파일러 옵션을 설정하려면

  1. 프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.

  2. 구성 속성>C/C++>명령줄 속성 페이지를 선택합니다.

  3. 추가 옵션 상자에 컴파일러 옵션을 입력합니다.

프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면

참고 항목

/vmb, /vmg (Representation 메서드)
MSVC 컴파일러 옵션
MSVC 컴파일러 명령줄 구문