IDebugHostTypeSignature::CompareAgainst 方法 (dbgmodel.h)
CompareAgainst 方法會將類型簽章與另一個類型簽章進行比較,並傳回兩個簽章的比較方式。 傳回的比較結果是 SignatureComparison 列舉的成員,其定義如下:
不相關的 - 比較兩個簽章或類型之間沒有關聯性。
模棱兩可的 - 一個簽章或類型會模棱兩可地比較。 對於兩個類型簽章,這表示可能有可能符合任一個簽章的類型實例。 例如,以下顯示的兩個類型簽章模棱兩可:
簽章 1:
std::pair<*, int>
簽章 2:
std::pair<int, *>
因為類型實例 std::p air<int,int> 比對其中一個同樣良好(兩者都有一個具體和一個通配符相符)。
LessSpecific - 一個簽章或類型比另一個簽章或類型更不明確。 通常,這表示較不特定的簽章具有通配符,其中較特定的簽章具有具體類型。 例如,下面的第一個簽章比第二個簽章更不明確:
簽章 1:
std::pair<*, int>
簽章 2:
std::pair<int, int>
因為它有通配符 (*) ,其中第二個具有具體類型 (int)。
MoreSpecific - 一個簽章或類型比其他簽章更具體。 通常,這表示較特定的簽章具有特定類型,其中較不特定的簽章具有通配符。 例如,下列第一個簽章比第二個簽章更具體:
簽章 1:
std::pair<int, int>
簽章 2:
std::pair<*, int>
因為它有一個具體類型(int),其中第二個具有通配符(*)。
相同的 - 兩個簽章或類型都相同。
語法
HRESULT CompareAgainst(
IDebugHostTypeSignature *typeSignature,
SignatureComparison *result
);
參數
typeSignature
要與比較的類型簽章。
result
此處會傳回這兩個簽章之間的關聯性指示 -- 不論它們不相關或相同、一個是比另一個簽章更不明確或更不明確。 SignatureComparison 列舉的成員會提供這類關聯性。
傳回值
此方法會傳回表示成功或失敗的 HRESULT。
言論
範例程式代碼
ComPtr<IDebugHostTypeSignature> spSig1; /* get a type signature */
ComPtr<IDebugHostTypeSignature> spSig2; /* get a second type signature */
SignatureComparison compResult;
if (SUCCEEDED(spSig1->ComapreAgainst(spSig2.Get(), &compResult)))
{
// compResult indicates how the two signatures are related (if at all)
// std::pair<int, *> and std::pair<*, int> would be related ambiguously
// std::pair<int, *> would be more specific than std::pair<*, *>
// std::pair<int, int> and std::pair<float, float> would be unrelated
}
要求
要求 | 價值 |
---|---|
標頭 | dbgmodel.h |