다음을 통해 공유


IDebugHostType2::IsTypedef 메서드(dbgmodel.h)

IsTypedef 메서드는 형식이 typedef인지 여부를 확인할 수 있는 유일한 메서드입니다. GetTypeKind 메서드는 기본 형식에서 호출된 것처럼 동작합니다.

구문

HRESULT IsTypedef(
  bool *isTypedef
);

매개 변수

isTypedef

형식 기호가 typedef이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

반환 값

이 메서드는 HRESULT를 반환합니다.

설명

예제 코드

ComPtr<IDebugHostType> spType; /* get a type for a typedef (only FindTypeByName 
                                  since the compiler usually only emits base types 
                                  in the symbols for data) */

ComPtr<IDebugHostType2> spType2;
if (SUCCEEDED(spType.As(&spType2)))
{
    bool isTypeDef;
    if (SUCCEEDED(spType2->IsTypedef(&isTypeDef)))
    {
        // isTypeDef indicates whether the type is a typedef.
    }
}

typedef인 모든 형식은 형식이 typedef의 기본이 되는 최종 형식인 것처럼 동작합니다. 즉, GetTypeKind와 같은 메서드는 형식이 typedef임을 나타내지 않습니다. 마찬가지로 GetBaseType은 정의가 참조하는 형식을 반환하지 않습니다. 대신 typedef의 기본이 되는 최종 정의에서 호출된 것처럼 동작을 나타냅니다. 예를 들어

typedef MYSTRUCT *PMYSTRUCT;
typedef PMYSTRUCT PTRMYSTRUCT;

'PMYSTRUCT 또는 PTRMYSTRUCT에 대한 IDebugHostType 은 다음 정보를 보고합니다.

  • GetTypeKind 메서드는 TypePointer를 반환합니다. 최종 기본 형식 MYSTRUCT *는 실제로 포인터입니다.

  • 'GetBaseType 메서드는 MYSTRUCT에 대한 형식을 반환합니다. MYSTRUCT *의 기본 형식은 MYSTRUCT입니다.

여기서 유일한 차이점은 IDebugHostType2 의 typedef 특정 메서드가 작동하는 방식입니다. 이러한 메서드는 다음과 같습니다.

STDMETHOD(IsTypedef)(_Out_ bool* isTypedef) PURE;

STDMETHOD(GetTypedefBaseType)(_Out_ IDebugHostType2** baseType) PURE;

STDMETHOD(GetTypedefFinalBaseType)(_Out_ IDebugHostType2** finalBaseType) PURE;

이 예제에서:

  • IsTypedef 메서드는 PMYSTRUCT 및 PTRMYSTRUCT 모두에 대해 true를 반환합니다.
  • GetTypedefBaseType 메서드는 PMYSTRUCT의 경우 MYSTRUCT *를 반환하고 PTRMYSTRUCT의 경우 PMYSTRUCT를 반환합니다.
  • GetTypedefFinalBaseType 메서드는 두 형식 모두에 대해 MYSTRUCT *를 반환합니다.

요구 사항

요구 사항
헤더 dbgmodel.h

추가 정보

IDebugHostType2 인터페이스