Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Pengkompil GCC Menggunakan Tatasusunan Bersaiz Boleh Ubah dalam C?

Bolehkah Pengkompil GCC Menggunakan Tatasusunan Bersaiz Boleh Ubah dalam C?

Susan Sarandon
Susan Sarandonasal
2024-11-02 02:26:30552semak imbas

Can GCC Compilers Use Variable-Sized Arrays in C  ?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn