Compartir a través de


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

Consulte también

Interfaz IDebugHostType2