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

另请参阅

IDebugHostType2 接口