Rumah >pembangunan bahagian belakang >C++ >Mengapa Penyusun C Menerima VLA Walaupun Larangan Standard?
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!