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
}
要求
要求 | 值 |
---|---|
Header | dbgmodel.h |