IDebugHostType2::IsTypedef 方法 (dbgmodel.h)
IsTypedef 方法是唯一能够查看类型是否为 typedef 的方法。 GetTypeKind 方法的行为就像对基础类型调用一样。
语法
HRESULT IsTypedef(
bool *isTypedef
);
参数
isTypedef
如果类型符号为 typedef,则返回 true;否则返回 false。
返回值
此方法返回 HRESULT。
注解
示例代码
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.
}
}
作为 typedef 的任何类型的行为都如同类型是 typedef 基础的最终类型一样。 这意味着 GetTypeKind 等方法不会指示类型为 typedef。 同样,GetBaseType 不会返回定义引用的类型。 它们将指示其行为就像是在 typedef 基础的最终定义上调用的。 示例:
typedef MYSTRUCT *PMYSTRUCT;
typedef PMYSTRUCT PTRMYSTRUCT;
PMYSTRUCT 或 PTRMYSTRUCT 的 IDebugHostType 将报告以下信息:
GetTypeKind 方法将返回 TypePointer。 最终的基础类型 MYSTRUCT * 确实是一个指针。
'GetBaseType 方法将返回 MYSTRUCT 的类型。 MYSTRUCT * 的基础类型为 MYSTRUCT。
此处的唯一区别是 IDebugHostType2 上 typedef 特定方法的行为方式。 这些方法是:
STDMETHOD(IsTypedef)(_Out_ bool* isTypedef) PURE;
STDMETHOD(GetTypedefBaseType)(_Out_ IDebugHostType2** baseType) PURE;
STDMETHOD(GetTypedefFinalBaseType)(_Out_ IDebugHostType2** finalBaseType) PURE;
在本示例中:
- IsTypedef 方法将为 PMYSTRUCT 和 PTRMYSTRUCT 返回 true
- GetTypedefBaseType 方法将为 PMYSTRUCT 返回 MYSTRUCT * ,为 PTRMYSTRUCT 返回 PMYSTRUCT
- GetTypedefFinalBaseType 方法将为这两种类型返回 MYSTRUCT *
要求
要求 | 值 |
---|---|
Header | dbgmodel.h |