Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Метод 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 |