Tatasusunan Bersaiz Boleh Ubah: Sambungan GCC
Piawaian C menentukan bahawa saiz tatasusunan mestilah integer tetap apabila ia diisytiharkan. Walau bagaimanapun, persoalan itu menimbulkan pemerhatian yang mengejutkan bahawa coretan kod menggunakan pembolehubah bukan tetap untuk saiz tatasusunan berjaya dikompil dalam GCC.
Sambungan GCC
GCC memperkenalkan lanjutan kepada standard, membenarkan penggunaan pembolehubah tidak tetap untuk saiz tatasusunan. Seperti yang dinyatakan dalam bahagian yang dipetik daripada "Bahasa Pengaturcaraan C", ini tidak disokong oleh standard.
Kejutan
Coretan kod dalam soalan mengisytiharkan tatasusunan v1 dan fungsi f yang mengambil hujah integer (mewakili saiz tatasusunan). Apabila memberikan nilai kepada v2 dalam f, GCC membenarkan gelagat bukan standard ini.
Implikasi
Walaupun GCC membenarkan sambungan ini, adalah penting untuk ambil perhatian bahawa ia adalah bukan sebahagian daripada piawaian C. Menggunakannya boleh membawa kepada isu mudah alih dengan penyusun atau sistem lain yang tidak menyokong sambungan.
Penguatkuasaan dan Amaran
Penyusun boleh menguatkuasakan standard melalui pilihan seperti -pedantic . Menggunakan pilihan ini, GCC akan mengeluarkan amaran apabila menghadapi pembinaan bukan standard seperti tatasusunan bersaiz berubah-ubah. Begitu juga, menyatakan -std=c 98 menjadikan binaan ini ralat.
Kesimpulan
Pelanjutan GCC membenarkan pengisytiharan tatasusunan bersaiz berubah-ubah, tetapi ia adalah penting untuk sedar bahawa ini bukan sebahagian daripada piawaian C. Untuk kemudahalihan dan pematuhan kepada standard, menggunakan saiz tatasusunan malar adalah disyorkan.
Atas ialah kandungan terperinci Bolehkah Pengkompil GCC Menggunakan Tatasusunan Bersaiz Boleh Ubah dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!