Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Teilweise validiertes Enumerationssymbol, das als Index verwendet wird
Hinweise
Der Compiler warnt, wenn ein Enumerationswert in einen ganzzahligen Typ umgewandelt oder aliast wird, das Ergebnis jedoch nicht auf nicht negative oder übermäßige Werte überprüft wird.
Diese Warnung ist neu in Visual Studio 2013. Er ist nicht standardmäßig aktiviert. Um sie als Warnung der Ebene 1 zu aktivieren, verwenden Sie /w14770. Informationen zum Deaktivieren von Warnungen nach Compilerversion finden Sie unter Compilerwarnungen nach Compilerversion.
Beispiel
Der folgende Code erzeugt Warnung C4770:
// c4770.cpp
// compile by using: cl /GL /w14770 c4770.cpp
enum E { a 0, b, c, E_MAX };
int main(int argc, char *argv[])
{
const E e1 = E(argc); // value unknown at compile time
if ((int)(e1) >= E_MAX)
return 0;
const int n = e1 + e1; // C4770 partially validated enum used as index
return argv[n][n];
}
Um die Warnung zu beheben, könnten Sie den Wert in die Prüfung unsigned intumwandeln, wodurch implizit ein nicht negativer Wert erzwungen wird:
if ((unsigned int)(e1) >= E_MAX)
return 0;
Oder überprüfen Sie explizit auf einen nicht negativen Wert:
if ((int)(e1) >= E_MAX || (int)(e1) < 0)
return 0;