Partager via


IDebugHostType3 ::IsTypedef, méthode (dbgmodel.h)

La méthode IsTypedef est la seule méthode capable de voir si un type est un typedef. La méthode GetTypeKind se comporte comme si elle était appelée sur le type sous-jacent.

Syntaxe

HRESULT IsTypedef(
  bool *isTypedef
);

Paramètres

isTypedef

Retourne true si le symbole de type est un typedef et false si ce n’est pas le cas.

Valeur de retour

Cette méthode retourne HRESULT.

Remarques

exemple de code

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

Tout type qui est un typedef se comporte comme si le type est le type final sous-jacent au typedef. Cela signifie que les méthodes telles que GetTypeKind n’indiquent pas que le type est un typedef. De même, la méthode GetBaseType ne retourne pas le type auquel la définition fait référence. Ils indiquent plutôt qu’ils se comportent comme s’ils étaient appelés sur la définition finale sous-jacente au typedef. Par exemple :

typedef MYSTRUCT *PMYSTRUCT;
typedef PMYSTRUCT PTRMYSTRUCT;

Un IDebugHostType pour « PMYSTRUCT ou PTRMYSTRUCT signale les informations suivantes :

  • La méthode GetTypeKind retourne TypePointer. Le dernier type sous-jacent MYSTRUCT * est en effet un pointeur.

  • La méthode GetBaseType retourne un type pour MYSTRUCT. Le type sous-jacent de MYSTRUCT * est MYSTRUCT.

La seule différence ici est la façon dont les méthodes spécifiques typedef sur IDebugHostType3 se comportent. Ces méthodes sont les suivantes :

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

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

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

Dans cet exemple :

  • La méthode IsTypedef retourne true pour PMYSTRUCT et PTRMYSTRUCT
  • La méthode GetTypedefBaseType retourne MYSTRUCT * pour PMYSTRUCT et PMYSTRUCT pour PTRMYSTRUCT
  • La méthode GetTypedefFinalBaseType retourne MYSTRUCT * pour les deux types

Exigences

Exigence Valeur
d’en-tête dbgmodel.h

Voir aussi

interface IDebugHostType3