Derleyici Uyarısı (düzey 4) C4770
dizin olarak kullanılan kısmen doğrulanmış 'symbol' sabit listesi
Derleyici, bir sabit listesi değerinin bir tamsayı türüne dönüştürülme veya diğer adla adlandırılırsa uyarır, ancak sonuç negatif olmayan veya aşırı değerler için işaretlenmez.
Açıklamalar
Bu uyarı Visual Studio 2013'te yenidir. Varsayılan olarak etkin değildir. Düzey 1 uyarısı olarak etkinleştirmek için kullanın /w14770
. Uyarıları derleyici sürümüne göre devre dışı bırakma hakkında bilgi için bkz . Derleyici sürümüne göre derleyici uyarıları.
Örnek
Aşağıdaki kod C4770 uyarısını oluşturur:
// 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];
}
Uyarıyı düzeltmek için denetimindeki unsigned int
değeri, negatif olmayan bir değeri örtük olarak zorlayan öğesine dönüştürebilirsiniz:
if ((unsigned int)(e1) >= E_MAX)
return 0;
Veya negatif olmayan bir değeri açıkça denetleyin:
if ((int)(e1) >= E_MAX || (int)(e1) < 0)
return 0;
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin