Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
Observaciones
de 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 sea 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, el método 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 de 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 |
---|---|
encabezado de | dbgmodel.h |