IDebugHostTypeSignature::CompareAgainst-Methode (dbgmodel.h)
Die CompareAgainst-Methode vergleicht die Typsignatur mit einer anderen Typsignatur und gibt den Vergleich der beiden Signaturen zurück. Das zurückgegebene Vergleichsergebnis ist ein Member der SignatureComparison-Enumeration, die wie folgt definiert ist:
Unabhängig: Es gibt keine Beziehung zwischen den beiden Signaturen oder Typen, die verglichen werden.
Mehrdeutig: Eine Signatur oder ein Typ vergleicht mehrdeutig mit der anderen. Für zwei Typsignaturen bedeutet dies, dass es potenzielle Typinstanzen gibt, die mit beiden Signaturen gleich gut übereinstimmen könnten. Als Beispiel sind die beiden unten gezeigten Typsignaturen mehrdeutig:
Signatur 1:
std::pair<*, int>
Signatur 2:
std::pair<int, *>
Da der Typ std::p air<int instance, stimmt int> mit beiden gleich gut überein (beide haben eine konkrete und eine Wildcard-Übereinstimmung).
LessSpecific: Eine Signatur oder ein Typ ist weniger spezifisch als die andere. Häufig bedeutet dies, dass die weniger spezifische Signatur über einen Feldhalter verfügt, wobei die spezifischere einen konkreten Typ hat. Als Beispiel ist die erste Signatur unten weniger spezifisch als die zweite:
Signatur 1:
std::pair<*, int>
Signatur 2:
std::pair<int, int>
Da es einen Platzhalter (das *) hat, wobei der zweite einen konkreten Typ (int) hat.
MoreSpecific : Eine Signatur oder ein Typ ist spezifischer als die andere. Häufig bedeutet dies, dass die spezifischere Signatur einen konkreten Typ hat, wobei die weniger spezifische Signatur einen Wildcard hat. Als Beispiel ist die folgende erste Signatur spezifischer als die zweite:
Signatur 1:
std::pair<int, int>
Signatur 2:
std::pair<*, int>
Da es einen konkreten Typ (int) hat, wobei der zweite einen Platzhalter (das *) hat.
Identisch : Die beiden Signaturen oder Typen sind identisch.
Syntax
HRESULT CompareAgainst(
IDebugHostTypeSignature *typeSignature,
SignatureComparison *result
);
Parameter
typeSignature
Die Typsignatur, mit der verglichen werden soll.
result
Hier wird ein Hinweis auf die Beziehung zwischen den beiden Signaturen zurückgegeben - unabhängig davon, ob sie nicht miteinander verknüpft oder identisch sind, eine mehr oder weniger spezifisch als die andere ist oder mehrdeutig sind. Eine solche Beziehung wird von einem Member der SignatureComparison-Enumeration angegeben.
Rückgabewert
Diese Methode gibt HRESULT zurück, das auf Erfolg oder Fehler hinweist.
Hinweise
Beispielcode
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
}
Anforderungen
Anforderung | Wert |
---|---|
Header | dbgmodel.h |