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 |