Метод IDebugHostTypeSignature::CompareAgainst (dbgmodel.h)
Метод CompareAgainst сравнивает сигнатуру типа с другой сигнатурой типа и возвращает способ сравнения двух сигнатур. Возвращаемый результат сравнения является членом перечисления SignatureComparison, которое определяется следующим образом:
Несвязанные — связь между двумя сравниваемых сигнатурами или типами отсутствует.
Ambiguous — одна сигнатура или тип сравниваются неоднозначно с другой. Для двух сигнатур типов это означает, что существуют потенциальные экземпляры типов, которые могут одинаково хорошо соответствовать любой из подписей. Например, две сигнатуры типов, показанные ниже, неоднозначны:
Сигнатура 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 |