Compiler Warning (level 1 dan level 4) C4700
variabel lokal yang tidak diinisialisasi 'nama' digunakan
Keterangan
Nama variabel lokal telah digunakan, yaitu, baca dari, sebelum ditetapkan nilai. Di C dan C++, variabel lokal tidak diinisialisasi secara default. Variabel yang tidak diinisialisasi dapat berisi nilai apa pun, dan penggunaannya menyebabkan perilaku yang tidak terdefinisi. Peringatan C4700 hampir selalu menunjukkan bug yang dapat menyebabkan hasil yang tidak dapat diprediksi atau crash dalam program Anda.
Untuk memperbaiki masalah ini, Anda dapat menginisialisasi variabel lokal saat dinyatakan, atau menetapkan nilai sebelum digunakan. Fungsi dapat digunakan untuk menginisialisasi variabel yang diteruskan sebagai parameter referensi, atau ketika alamatnya diteruskan sebagai parameter penunjuk.
/sdl
Opsi kompilator (Aktifkan Pemeriksaan Keamanan Tambahan) meningkatkan peringatan ini menjadi kesalahan.
Contoh
Sampel ini menghasilkan C4700 ketika variabel t
, , u
dan v
digunakan sebelum diinisialisasi, dan menunjukkan jenis nilai sampah yang dapat dihasilkan. x
Variabel , y
, dan z
tidak menyebabkan peringatan, karena diinisialisasi sebelum digunakan:
// c4700.cpp
// compile by using: cl /EHsc /W4 c4700.cpp
#include <iostream>
// function takes an int reference to initialize
void initialize(int& i)
{
i = 21;
}
int main()
{
int s, t, u, v; // Danger, uninitialized variables
s = t + u + v; // C4700: t, u, v used before initialization
std::cout << "Value in s: " << s << std::endl;
int w, x; // Danger, uninitialized variables
initialize(x); // fix: call function to init x before use
int y{10}; // fix: initialize y, z when declared
int z{11}; // This C++11 syntax is recommended over int z = 11;
w = x + y + z; // Okay, all values initialized before use
std::cout << "Value in w: " << w << std::endl;
}
Ketika kode ini dijalankan, t
, , dan v
tidak diinisialisasi, dan output untuk s
tidak dapat diprediksiu
:
Value in s: 37816963
Value in w: 42
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk