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

另请参阅

IDebugHostTypeSignature 接口