Ich versuche derzeit über eine Google Authenticator für Open-Source-Server, und sie haben dieses kleine Stück CodeWas ist der Punkt der linken Verschiebung um 0?
if (securityFlags & 0x01) // PIN input
{
pkt << uint32(0);
pkt << uint64(0) << uint64(0); // 16 bytes hash?
// This triggers the 2 factor authenticator entry to popup on the client side
}
if (securityFlags & 0x02) // Matrix input
{
pkt << uint8(0);
pkt << uint8(0);
pkt << uint8(0);
pkt << uint8(0);
pkt << uint64(0);
}
if (securityFlags & 0x04) // Security token input
{
pkt << uint8(1);
}
Ich versuche, warum sie pkt << uint32(0)
verwenden, um herauszufinden, einfach zu implementieren, da sie völlig überflüssig erscheinen mir. Und sie benutzen es auch oft, was noch weniger Sinn macht.
Irgendwelche Ideen, warum ihr Code so geschrieben wurde?
Ich hoffe, ich habe deine Frage richtig verstanden, wenn nicht, rolle bitte meine Bearbeitung zurück. – Rakete1111
Die Aufrufe helfen dem Compiler, zu wissen, welche der überladenen Versionen des Operators '<<' verwendet werden sollte. Das Literal '0' könnte implizit in eine Anzahl von Typen konvertiert werden, einschließlich int und unsigned int. Wenn Sie eine explizite Konvertierung verwenden, können Sie den Compiler veranlassen, Ihrem Lead zu folgen und die Überladung mit der passenden Signatur aufzurufen. Dies hilft in der Situation, in der der Compiler nicht weiß, was zu tun ist, und mit einem mehrdeutigen Funktionsaufrufkompilierungsfehler beendet wird. – ccpgh
Weitere Informationen finden Sie unter http://stackoverflow.com/questions/6233132/c-compiler-error-ambigous-call-to-overloaded-function. – ccpgh