Compartilhar via


Método IDebugHostTypeSignature::CompareAgainst (dbgmodel.h)

O método CompareAgainst compara a assinatura de tipo com outra assinatura de tipo e retorna como as duas assinaturas se comparam. O resultado da comparação retornado é um membro da enumeração SignatureComparison que é definida da seguinte maneira:

Não relacionado – não há nenhuma relação entre as duas assinaturas ou tipos que estão sendo comparados.

Ambíguo – uma assinatura ou tipo é comparado de forma ambígua com a outra. Para duas assinaturas de tipo, isso significa que há possíveis instâncias de tipo que podem corresponder a uma assinatura igualmente bem. Por exemplo, as duas assinaturas de tipo mostradas abaixo são ambíguas:

Assinatura 1:

std::pair<*, int> 

Assinatura 2:

std::pair<int, *>

Como a instância de tipo std::p air<int, int> corresponde a um igualmente bem (ambos têm uma correspondência de concreto e um curinga).

LessSpecific – uma assinatura ou tipo é menos específico do que o outro. Geralmente, isso significa que a assinatura menos específica tem um curinga em que o mais específico tem um tipo concreto. Por exemplo, a primeira assinatura abaixo é menos específica do que a segunda:

Assinatura 1:

std::pair<*, int> 

Assinatura 2:

std::pair<int, int> 

Porque ele tem um curinga (o *) em que o segundo tem um tipo concreto (int).

MoreSpecific – uma assinatura ou tipo é mais específico do que o outro. Geralmente, isso significa que a assinatura mais específica tem um tipo concreto em que o menos específico tem um curinga. Por exemplo, a primeira assinatura abaixo é mais específica do que a segunda:

Assinatura 1:

std::pair<int, int> 

Assinatura 2:

std::pair<*, int> 

Porque ele tem um tipo concreto (int) em que o segundo tem um curinga (o *).

Idêntico – as duas assinaturas ou tipos são idênticos.

Sintaxe

HRESULT CompareAgainst(
  IDebugHostTypeSignature *typeSignature,
  SignatureComparison     *result
);

Parâmetros

typeSignature

A assinatura de tipo com a qual comparar.

result

Uma indicação da relação entre as duas assinaturas é retornada aqui – sejam elas não relacionadas ou idênticas, uma é mais ou menos específica que a outra ou elas são ambíguas. Essa relação é fornecida por um membro da enumeração SignatureComparison.

Retornar valor

Esse método retorna HRESULT que indica êxito ou falha.

Comentários

Código de exemplo

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
}

Requisitos

Requisito Valor
Cabeçalho dbgmodel.h

Confira também

Interface IDebugHostTypeSignature