Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
částečně ověřený výčet symbol použitý jako index
Poznámky
Kompilátor varuje, pokud je hodnota výčtu přetypována nebo aliasována na celočíselném typu, ale výsledek se nekontroluje u nezáporných nebo nadměrných hodnot.
Toto upozornění je nové v sadě Visual Studio 2013. Ve výchozím nastavení není povolená. Pokud ho chcete povolit jako upozornění úrovně 1, použijte /w14770. Informace o tom, jak zakázat upozornění podle verze kompilátoru, naleznete v tématu Upozornění kompilátoru podle verze kompilátoru.
Příklad
Následující kód vygeneruje upozornění 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];
}
Pokud chcete upozornění opravit, můžete přetypovat hodnotu v kontrole na unsigned inthodnotu, která implicitně vynutí nezápornou hodnotu:
if ((unsigned int)(e1) >= E_MAX)
return 0;
Nebo explicitně zkontrolujte nezápornou hodnotu:
if ((int)(e1) >= E_MAX || (int)(e1) < 0)
return 0;