Saya telah mendengar legenda bervariasi dari "itu harus opsional karena beberapa kompiler kecil harus dapat memenuhi C11 tanpa VLA" hingga "itu adalah kesalahan di tempat pertama". Namun, saya tidak pernah mendapat jawaban yang benar dan pasti. Pada akhirnya, saya tidak percaya ada orang yang benar-benar memilikinya karena alasannya (dengan asumsi - dan berharap - ada) tidak pernah diungkapkan (sejauh pencarian lama saya berjalan).
Dari Bab 4 (halaman 13) dari Dasar Pemikiran untuk Standar Internasional - Bahasa Pemrograman - C 5.10 (2003)
Dengan mendefinisikan implementasi sesuai dengan program yang mereka terima, Standar membiarkan pintu terbuka untuk kelas ekstensi yang luas sebagai bagian dari implementasi yang sesuai. Dengan mendefinisikan kedua host yang sesuai dan implementasi yang berdiri bebas, Standar mengakui penggunaan C untuk menulis program seperti sistem operasi dan aplikasi berbasis ROM, serta aplikasi yang di-host lebih konvensional. Di luar skema dua tingkat ini, tidak ada subsetting tambahan yang ditentukan untuk C, karena Komite C89 merasa sangat kuat bahwa terlalu banyak level melemahkan keefektifan suatu standar .
Tekankan milikku. Perhatikan bahwa keputusan ini bertentangan dengan alasan mereka sendiri. Namun, ada hal lain yang dibuat opsional. Sekarang Anda mendapatkan __STDC_NO_VLA__
atau mendukung VLA. Ini adalah keputusan yang sangat aneh.