Partager via


Méthode IDebugHostType2 ::IsTypedef (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 retournée

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<IDebugHostType2> spType2;
if (SUCCEEDED(spType.As(&spType2)))
{
    bool isTypeDef;
    if (SUCCEEDED(spType2->IsTypedef(&isTypeDef)))
    {
        // isTypeDef indicates whether the type is a typedef.
    }
}

Tout type qui est un typedef se comporte comme si le type était 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, 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 avaient été 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 renvoie 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 IDebugHostType2 se comportent. Ces méthodes sont les suivantes :

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

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

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

Dans cet exemple :

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

Configuration requise

Condition requise Valeur
En-tête dbgmodel.h

Voir aussi

Interface IDebugHostType2