Freigeben über


IDebugHostType3::IsTypedef-Methode (dbgmodel.h)

Die IsTypedef-Methode ist die einzige Methode, die erkennen kann, ob ein Typ ein Typedef ist. Die GetTypeKind-Methode verhält sich wie für den zugrunde liegenden Typ aufgerufen.

Syntax

HRESULT IsTypedef(
  bool *isTypedef
);

Parameter

isTypedef

Gibt "true" zurück, wenn es sich bei dem Typsymbol um einen Typedef und "false" handelt, wenn dies nicht der Fall ist.

Rückgabewert

Diese Methode gibt HRESULT zurück.

Bemerkungen

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<IDebugHostType3> spType3;
if (SUCCEEDED(spType.As(&spType3)))
{
    bool isTypeDef;
    if (SUCCEEDED(spType3->IsTypedef(&isTypeDef)))
    {
        // isTypeDef indicates whether the type is a typedef.
    }
}

Jeder Typ, bei dem es sich um einen Typedef handelt, verhält sich so, als ob es sich bei dem Typ um den endgültigen Typ handelt, der dem Typedef zugrunde liegt. Dies bedeutet, dass Methoden wie GetTypeKind nicht angeben, dass der Typ ein Typedef ist. Ebenso gibt die GetBaseType-Methode nicht den Typ zurück, auf den sich die Definition bezieht. Sie geben stattdessen das Verhalten an, als ob sie für die endgültige Definition aufgerufen wurden, die dem Typedef zugrunde liegt. Beispiel:

typedef MYSTRUCT *PMYSTRUCT;
typedef PMYSTRUCT PTRMYSTRUCT;

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

  • Die GetTypeKind-Methode gibt TypePointer zurück. Der letzte zugrunde liegende Typ MYSTRUCT * ist tatsächlich 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 darin, wie sich die typedef-spezifischen Methoden für IDebugHostType3 verhalten. Diese Methoden sind:

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

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

STDMETHOD(GetTypedefFinalBaseType)(_Out_ IDebugHostType3** 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

Siehe auch

IDebugHostType3-Schnittstelle