Ralat kompilasi baru-baru ini yang ditemui semasa cuba menyusun kod C telah menimbulkan persoalan tentang piawaian C lalai apabila menggunakan pengkompil g. Kod yang terlibat termasuk aliran fail dan manipulasi rentetan. Apabila disusun menggunakan arahan 'g example.cpp', kompilasi gagal kerana ralat yang melibatkan penukaran antara rentetan dan const char*. Walau bagaimanapun, menggunakan arahan 'g -std=c 17 example.cpp' telah menyelesaikan isu.
Untuk menyiasat piawai lalai yang digunakan oleh g apabila bendera -std tidak dinyatakan, kaedah dibentangkan untuk menentukan versi lalai standard C yang disokong oleh versi tertentu g :
Bash: Jalankan arahan berikut:
g++ -dM -E -x c++ /dev/null | grep -F __cplusplus
PowerShell: Jalankan arahan berikut:
g++ -dM -E -x c++ NUL | Select-String __cplusplus
Output arahan ini akan memaparkan baris yang serupa kepada:
#define __cplusplus 199711L
Nilai berikut '__cplusplus' menunjukkan versi standard C lalai. Dalam contoh ini, ia adalah C 98 (199711).
Sebagai pengaturcara, keputusan sama ada atau sentiasa menentukan bendera -std bergantung pada beberapa faktor:
Secara amnya, adalah disyorkan untuk menentukan standard C secara eksplisit menggunakan -std flag untuk mengelakkan tingkah laku yang tidak dijangka kerana tetapan lalai tersirat. Dengan mengawal standard C, pengaturcara boleh memastikan prestasi optimum, ketepatan kod dan mudah alih.
Atas ialah kandungan terperinci Apakah Piawaian C yang g menjadi Lalai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!