Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mendiamkan Amaran GCC 4.3 Mengenai Penukaran Malar Rentetan yang Dihentikan?
GCC 4.3 mengeluarkan amaran apabila pemalar rentetan ditukar kepada aksara*. Bagi pembangun yang mengusahakan pangkalan kod yang besar dengan banyak contoh penukaran yang ditamatkan ini, adalah sukar untuk mengemas kini semua kod yang terjejas secara manual. Artikel ini membincangkan cara untuk menyekat amaran ini tanpa menjejaskan kualiti kod.
Penyelesaian:
Isu asas berpunca daripada menghantar literal rentetan sebagai argumen kepada fungsi yang mengharapkan char. Untuk menyelesaikan amaran, fungsi ini harus diubah suai untuk menerima const char sebaliknya.
Penjelasan:
Tersurat rentetan tidak boleh diubah dan disimpan dalam baca sahaja segmen ingatan. Percubaan untuk mengubah suai pemalar rentetan ini, seperti dengan membuang constness, adalah tingkah laku yang tidak ditentukan. Oleh itu, apabila menghantar literal rentetan kepada fungsi yang boleh mengubah suainya, adalah penting untuk menggunakan const char* sebagai jenis hujah.
Contoh:
Pertimbangkan kod berikut :
void print(char* ch); int main() { print("Hello"); return 0; }
Di sini, fungsi cetakan menjangkakan hujah char yang boleh diubah suai. Untuk melumpuhkan amaran sambil mengekalkan tingkah laku yang dimaksudkan, ubah suai fungsi untuk menerima const char seperti yang ditunjukkan di bawah:
void print(const char* ch) { std::cout << ch; }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendiamkan Amaran GCC 4.3 Mengenai Penukaran Malar Rentetan yang Dihentikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!