IDebugHostType3::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<IDebugHostType3> spType3;
if (SUCCEEDED(spType.As(&spType3)))
{
bool isTypeDef;
if (SUCCEEDED(spType3->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。
這裡唯一的差異在於 typedef 特定方法在 IDebugHostType3 的行為。 這些方法是:
STDMETHOD(IsTypedef)(_Out_ bool* isTypedef) PURE;
STDMETHOD(GetTypedefBaseType)(_Out_ IDebugHostType3** baseType) PURE;
STDMETHOD(GetTypedefFinalBaseType)(_Out_ IDebugHostType3** finalBaseType) PURE;
在這裡範例中:
- IsTypedef 方法會針對 PMYSTRUCT 和 PTRMYSTRUCT 傳回 true
- GetTypedefBaseType 方法會針對 PMYSTRUCT 傳回 MYSTRUCT * 和 PTRMYSTRUCT 的 PMYSTRUCT
- GetTypedefFinalBaseType 方法會針對這兩種類型傳回 MYSTRUCT *
要求
要求 | 價值 |
---|---|
標頭 | dbgmodel.h |