Método IDebugHostTypeSignature::CompareAgainst (dbgmodel.h)
El método CompareAgainst compara la firma de tipo con otra firma de tipo y devuelve cómo se comparan las dos firmas. El resultado de la comparación que se devuelve es un miembro de la enumeración SignatureComparison, que se define de la siguiente manera:
No relacionado: no hay ninguna relación entre las dos firmas o tipos que se están comparando.
Ambiguo : una firma o tipo compara ambiguamente con la otra. En el caso de dos firmas de tipo, esto significa que hay instancias de tipo potenciales que podrían coincidir con cualquier firma igual de bien. Por ejemplo, las dos firmas de tipo que se muestran a continuación son ambiguas:
Firma 1:
std::pair<*, int>
Firma 2:
std::pair<int, *>
Dado que la instancia de tipo std::p air<int, int> coincide con una igual de bien (ambas tienen una coincidencia concreta y otra con caracteres comodín).
LessSpecific : una firma o tipo es menos específica que la otra. A menudo, esto significa que la firma menos específica tiene un carácter comodín donde el más específico tiene un tipo concreto. Por ejemplo, la primera firma siguiente es menos específica que la segunda:
Firma 1:
std::pair<*, int>
Firma 2:
std::pair<int, int>
Dado que tiene un carácter comodín (el *) donde el segundo tiene un tipo concreto (int).
MoreSpecific : una firma o tipo es más específica que la otra. A menudo, esto significa que la firma más específica tiene un tipo concreto donde el menos específico tiene un carácter comodín. Por ejemplo, la primera firma siguiente es más específica que la segunda:
Firma 1:
std::pair<int, int>
Firma 2:
std::pair<*, int>
Dado que tiene un tipo concreto (int) donde el segundo tiene un carácter comodín (el *).
Idéntico: las dos firmas o tipos son idénticas.
Sintaxis
HRESULT CompareAgainst(
IDebugHostTypeSignature *typeSignature,
SignatureComparison *result
);
Parámetros
typeSignature
Firma de tipo con la que se va a comparar.
result
Aquí se devuelve una indicación de la relación entre las dos firmas: si no están relacionadas o idénticas, una es más o menos específica que la otra, o si son ambiguas. Dicha relación la da un miembro de la enumeración SignatureComparison.
Valor devuelto
Este método devuelve HRESULT que indica éxito o error.
Comentarios
Código de ejemplo
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 |
---|---|
Header | dbgmodel.h |