Die C4800 Warnung in der Microsoft C++ Compiler, wie hier beschrieben:Hat C4800 einen realen Wert?
https://msdn.microsoft.com/en-us/library/b6801kcy.aspx
macht diesen Code:
// C4800.cpp
// compile with: /W3
int main() {
int i = 0;
// try..
// bool i = 0;
bool j = i; // C4800
j++;
}
die C4800 Warnung werfen: „ 'Typ': Wert zwingen‚true in bool "oder" false "(Leistungswarnung)"
Microsoft scheint zu glauben, dass es ziemlich wichtig ist, und hat es als Level3-Warnung, aber Clang glaubt anscheinend, dass es nicht ist, wie es bei Null ist darüber bei Weverything, seine maximale Warnstufe.
Gibt es einen wirklichen Weltfehler, den jemand finden kann, der C4800 würde darauf hinweisen, dass es sich lohnen würde, es aktiviert zu haben?
Lesen Sie den Wortlaut : "Leistungswarnung" Es warnt Sie nur, dass dies etwas langsamer/teurer als Sie vielleicht erwarten. –
Leistungseinbuße ist auch ein Fehler :) Können Sie sich einen realen Fall vorstellen, in dem Sie eine unnötige Leistungsverschlechterung haben, auf die diese Warnung hinweisen würde? –
Wenn Sie es nicht bereits gefunden haben, [kann diese Frage] (http://stackoverflow.com/questions/206564/what-is-the-performance-implication-of-converting-to-bool-in-c) für dich von Interesse sein. Die erste Antwort scheint darauf hinzuweisen, dass die "Leistungswarnung" nicht mehr genau das ist, worauf die Warnung hinweisen soll. – jaggedSpire