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

另请参阅

IDebugHostTypeSignature 接口