Método IDebugHostType2::IsTypedef (dbgmodel.h)
El método IsTypedef es el único método capaz de ver si un tipo es una definición de tipo. El método GetTypeKind se comportará como si se llamara en el tipo subyacente.
Sintaxis
HRESULT IsTypedef(
bool *isTypedef
);
Parámetros
isTypedef
Devolverá true si el símbolo de tipo es una definición de tipo y false si no lo es.
Valor devuelto
Este método devuelve HRESULT.
Comentarios
Código de ejemplo
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.
}
}
Cualquier tipo que sea una definición de tipo se comportará como si el tipo fuera el tipo final subyacente a la definición de tipo. Esto significa que los métodos como GetTypeKind no indicarán que el tipo es una definición de tipo. Del mismo modo, GetBaseType no devolverá el tipo al que hace referencia la definición. En su lugar, indicarán que se comportan como si se llamaran en la definición final subyacente a la definición de tipo. Por ejemplo:
typedef MYSTRUCT *PMYSTRUCT;
typedef PMYSTRUCT PTRMYSTRUCT;
Un IDebugHostType para "PMYSTRUCT o PTRMYSTRUCT notificará la siguiente información:
El método GetTypeKind devolverá TypePointer. El tipo subyacente final MYSTRUCT * es realmente un puntero.
El método 'GetBaseType devolverá un tipo para MYSTRUCT. El tipo subyacente de MYSTRUCT * es MYSTRUCT.
La única diferencia aquí es cómo se comportan los métodos específicos typedef en IDebugHostType2 . Estos métodos son:
STDMETHOD(IsTypedef)(_Out_ bool* isTypedef) PURE;
STDMETHOD(GetTypedefBaseType)(_Out_ IDebugHostType2** baseType) PURE;
STDMETHOD(GetTypedefFinalBaseType)(_Out_ IDebugHostType2** finalBaseType) PURE;
En este ejemplo:
- El método IsTypedef devolverá true para PMYSTRUCT y PTRMYSTRUCT.
- El método GetTypedefBaseType devolverá MYSTRUCT * para PMYSTRUCT y PMYSTRUCT para PTRMYSTRUCT.
- El método GetTypedefFinalBaseType devolverá MYSTRUCT * para ambos tipos.
Requisitos
Requisito | Valor |
---|---|
Header | dbgmodel.h |