Compartilhar via


Método IDebugHostType2::IsTypedef (dbgmodel.h)

O método IsTypedef é o único método capaz de ver se um tipo é um typedef. O método GetTypeKind se comportará como se fosse chamado no tipo subjacente.

Sintaxe

HRESULT IsTypedef(
  bool *isTypedef
);

Parâmetros

isTypedef

Retornará true se o símbolo de tipo for um typedef e false se não for.

Retornar valor

Esse método retorna HRESULT.

Comentários

Código de exemplo

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

Qualquer tipo que seja um typedef se comportará como se o tipo fosse o tipo final subjacente ao typedef. Isso significa que métodos como GetTypeKind não indicarão que o tipo é um typedef. Da mesma forma, GetBaseType não retornará o tipo ao qual a definição se refere. Em vez disso, eles indicarão que se comportarão como se fossem chamados na definição final subjacente ao typedef. Por exemplo:

typedef MYSTRUCT *PMYSTRUCT;
typedef PMYSTRUCT PTRMYSTRUCT;

Um IDebugHostType para 'PMYSTRUCT ou PTRMYSTRUCT relatará as seguintes informações:

  • O método GetTypeKind retornará TypePointer. O tipo subjacente final MYSTRUCT * é de fato um ponteiro.

  • O método 'GetBaseType retornará um tipo para MYSTRUCT. O tipo subjacente de MYSTRUCT * é MYSTRUCT.

A única diferença aqui é como os métodos específicos do typedef em IDebugHostType2 se comportam. Esses métodos são:

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

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

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

Neste exemplo:

  • O método IsTypedef retornará true para PMYSTRUCT e PTRMYSTRUCT
  • O método GetTypedefBaseType retornará MYSTRUCT * para PMYSTRUCT e PMYSTRUCT para PTRMYSTRUCT
  • O método GetTypedefFinalBaseType retornará MYSTRUCT * para ambos os tipos

Requisitos

Requisito Valor
Cabeçalho dbgmodel.h

Confira também

Interface IDebugHostType2