Walaupun VLA diseragamkan dalam C99, ia bukan sebahagian daripada piawaian C. Namun begitu, pengkompil seperti g dan clang menerima pengisytiharan VLA dengan amaran di bawah bendera -pedantic.
Penyusun mempunyai kefleksibelan untuk memasukkan ciri bukan standard untuk mengekalkan keserasian dengan kod lama atau untuk meningkatkan kemudahan pengaturcara. Dalam kes ini, pengarang pengkompil memilih untuk membenarkan pengisytiharan VLA untuk memudahkan penghijrahan daripada C99 ke C .
Piawaian C menyatakan dengan jelas bahawa tatasusunan hanya boleh diisytiharkan dengan saiz malar. Pengisytiharan VLA, apabila saiznya tidak diketahui pada masa penyusunan, melanggar peraturan ini dan oleh itu dianggap menyalahi undang-undang dalam C .
Walaupun larangan standard, pengkompil menterjemah VLA ke dalam kod yang kelihatan memperuntukkan memori pada timbunan. Walau bagaimanapun, tingkah laku ini tidak ditentukan oleh piawaian C dan semata-mata butiran pelaksanaan pengkompil.
Walaupun VLA menawarkan fleksibiliti dalam senario tertentu, adalah penting untuk memahami bahawa mereka tidak sebahagian daripada piawaian C. Penyusun boleh menerimanya atas sebab keserasian, tetapi menggunakannya harus dilakukan dengan berhati-hati dan tidak boleh bergantung pada kod yang mematuhi standard. Sentiasa rujuk dokumentasi pengkompil anda untuk ciri bukan standard tertentu yang disokong.
Atas ialah kandungan terperinci Adakah Penyusun C Menerima Tatasusunan Panjang Berubah (VLA), dan Jika Ya, Mengapa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!