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 |