共用方式為


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 和 PTRMYSTRUCT 的 PMYSTRUCT 傳回 MYSTRUCT *
  • GetTypedefFinalBaseType 方法會針對這兩種類型傳回 MYSTRUCT *

規格需求

需求
標頭 dbgmodel.h

另請參閱

IDebugHostType2 介面