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 |