Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
delvis verifierat uppräkningstecken som används som index
Anmärkningar
Kompilatorn varnar om ett uppräkningsvärde kastas eller kopplas till en heltalstyp, men resultatet kontrolleras inte för icke-negativa eller alltför stora värden.
Den här varningen är ny i Visual Studio 2013. Det är inte aktiverat som standard. Om du vill aktivera den som en varning på nivå 1 använder du /w14770. Information om hur du inaktiverar varningar efter kompilatorversion finns i Kompilatorvarningar efter kompilatorversion.
Example
Följande kod genererar varning 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];
}
För att åtgärda varningen kan du omvandla värdet i kontrollen till unsigned int, vilket implicit tvingar fram ett icke-negativt värde:
if ((unsigned int)(e1) >= E_MAX)
return 0;
Du kan också uttryckligen söka efter ett icke-negativt värde:
if ((int)(e1) >= E_MAX || (int)(e1) < 0)
return 0;