Rumah >pembangunan bahagian belakang >C++ >Mengapa Penyusun C Menerima VLA Walaupun Larangan Standard?

Mengapa Penyusun C Menerima VLA Walaupun Larangan Standard?

Barbara Streisand
Barbara Streisandasal
2024-12-26 04:58:13295semak imbas

Why Do C   Compilers Accept VLAs Despite Standard Prohibition?

VLA dalam C : Penerimaan Pengkompil Walaupun Ciri Bukan Standard

Variabel Length Arrays (VLA), yang diperkenalkan dalam C99, tidak disokong secara rasmi dalam C . Namun, pengkompil seperti g dan clang secara mengejutkan membenarkan pengisytiharan VLA, walaupun menghasilkan amaran apabila bendera -pedantic didayakan.

Penerimaan Pengkompil

Penerimaan pengkompil terhadap VLA berpunca. daripada pematuhannya kepada warisan tingkah laku pengkompil C. GCC, khususnya, mengekalkan keserasian dengan pengkompil C lama yang membenarkan VLA.

Implikasi Standard

Walaupun pengkompil menerima, C secara jelas melarang VLA dalam tatabahasa pengisytiharan tatasusunan dalam [dcl.array]: hanya ungkapan malar boleh digunakan sebagai penentu saiz tatasusunan. Dalam contoh anda, n tidak memenuhi keperluan ini.

Pelaksanaan Pengkompil

Walaupun piawaian tidak membenarkan VLA, pengkompil yang menyokongnya berbuat demikian melalui sambungan. Butiran pelaksanaan khusus berbeza-beza bergantung pada pengkompil. Dalam kes g dan clang , contohnya, VLA dilaksanakan sebagai tatasusunan biasa pada tindanan, dengan saiznya diperuntukkan secara dinamik semasa masa jalan.

Atas ialah kandungan terperinci Mengapa Penyusun C Menerima VLA Walaupun Larangan Standard?. 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