ฉันเคยได้ยินตำนานที่แตกต่างจาก "ควรเป็นทางเลือกเนื่องจากคอมไพเลอร์ขนาดเล็กบางตัวควรสามารถเข้ากันได้กับ C11 ที่ไม่มี VLA" ถึง "มันเป็นความผิดพลาดตั้งแต่แรก" ฉันไม่เคยได้รับคำตอบที่แน่นอนและชัดเจนสำหรับเรื่องนี้มาก่อน ในที่สุดฉันไม่เชื่อว่าใครก็ตามมีเหตุผลอย่างแท้จริง (สมมติว่า - และหวังว่า - มี) ก็ไม่เคยเปิดเผย (เท่าที่การสืบค้นเก่า ๆ ของฉันดำเนินไป)
จากบทที่ 4 (หน้า 13) ของเหตุผลสำหรับมาตรฐานสากล - ภาษาโปรแกรม - C 5.10 (2003)
โดยการกำหนดการใช้งานที่สอดคล้องกันในแง่ของโปรแกรมที่พวกเขายอมรับมาตรฐานจะเปิดประตูสำหรับส่วนขยายในวงกว้างซึ่งเป็นส่วนหนึ่งของการใช้งานที่สอดคล้องกัน โดยการกำหนดทั้งการปฏิบัติตามโฮสต์และการปรับใช้อิสระอิสระมาตรฐานตระหนักถึงการใช้ C เพื่อเขียนโปรแกรมเช่นระบบปฏิบัติการและแอพพลิเคชั่นแบบ ROM นอกเหนือจากโครงการทั้งสองระดับนี้ไม่มี Subsetting เพิ่มเติมจะกำหนดไว้สำหรับ C, ตั้งแต่คณะกรรมการ C89 รู้สึกอย่างแรงกล้าว่าระดับมากเกินไปเจือจางประสิทธิผลของมาตรฐาน
เน้นการขุด โปรดสังเกตว่าการตัดสินใจครั้งนี้ขัดกับเหตุผลของพวกเขาเอง กระนั้นก็มีอีกเรื่องที่เลือกทำ ตอนนี้คุณจะได้รับ__STDC_NO_VLA__
หรือรองรับ VLA มันเป็นการตัดสินใจที่แปลกมาก