Freigeben über


IDebugHostType2::IsTypedef-Methode (dbgmodel.h)

Die IsTypedef-Methode ist die einzige Methode, die erkennen kann, ob es sich bei einem Typ um einen Typ handelt. Die GetTypeKind-Methode verhält sich so, als ob sie für den zugrunde liegenden Typ aufgerufen wird.

Syntax

HRESULT IsTypedef(
  bool *isTypedef
);

Parameter

isTypedef

Gibt true zurück, wenn das Typsymbol eine Typedef ist, und false, wenn dies nicht der Fall ist.

Rückgabewert

Diese Methode gibt HRESULT zurück.

Hinweise

Beispielcode

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.
    }
}

Jeder Typ, der eine Typedef ist, verhält sich so, als sei der Typ der letzte Typ, der der Typdefinition zugrunde liegt. Dies bedeutet, dass Methoden wie GetTypeKind nicht angeben, dass es sich bei dem Typ um einen Typ handelt. Ebenso gibt GetBaseType nicht den Typ zurück, auf den sich die Definition bezieht. Sie verhalten sich stattdessen so, als würden sie in der endgültigen Definition aufgerufen, die dem Typdef zugrunde liegt. Beispiel:

typedef MYSTRUCT *PMYSTRUCT;
typedef PMYSTRUCT PTRMYSTRUCT;

Ein IDebugHostType für "entweder PMYSTRUCT oder PTRMYSTRUCT meldet die folgenden Informationen:

  • Die GetTypeKind-Methode gibt TypePointer zurück. Der endgültige zugrunde liegende Typ MYSTRUCT * ist in der Tat ein Zeiger.

  • Die GetBaseType-Methode gibt einen Typ für MYSTRUCT zurück. Der zugrunde liegende Typ von MYSTRUCT * ist MYSTRUCT.

Der einzige Unterschied besteht hier darin, wie sich die typedef-spezifischen Methoden auf IDebugHostType2 verhalten. Diese Methoden sind:

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

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

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

In diesem Beispiel:

  • Die IsTypedef-Methode gibt true für PMYSTRUCT und PTRMYSTRUCT zurück.
  • Die GetTypedefBaseType-Methode gibt MYSTRUCT * für PMYSTRUCT und PMYSTRUCT für PTRMYSTRUCT zurück.
  • Die GetTypedefFinalBaseType-Methode gibt MYSTRUCT * für beide Typen zurück.

Anforderungen

Anforderung Wert
Header dbgmodel.h

Weitere Informationen

IDebugHostType2-Schnittstelle