Я чув легенди, що відрізняються від "це повинно бути необов'язковим, оскільки деякі невеликі компілятори повинні бути здатними бути сумісними з C11 без VLAs" до "це була помилка в першу чергу". Я ніколи не отримав жодної правдивої і певної відповіді на це. Зрештою, я не вірю, що хтось насправді має таке, оскільки причина (припускаючи - і сподіваюсь, що є така) ніколи не розголошувалася (наскільки мої старі пошуки йшли).
З глави 4 (стор. 13) Обгрунтування міжнародних стандартів - Мови програмування - C 5.10 (2003)
Визначаючи відповідні реалізації з точки зору програм, які вони приймають, Стандарт залишає відкритими двері для широкого класу розширень як частини відповідної реалізації. Визначаючи як відповідні розміщені, так і відповідні самостійно реалізовані реалізації, Стандарт визнає використання C для запису таких програм, як операційні системи та додатки на основі ROM, а також більш звичайні розміщені програми. Поза цією дворівневою схемою додаткового підмножини для C не визначено, оскільки Комітет C89 сильно вважає, що занадто багато рівнів знижує ефективність стандарту .
Наголос мій. Зауважте, що це рішення суперечить їх власному обґрунтуванню. Тим не менш, інша річ стала необов’язковою. Тепер ви отримуєте __STDC_NO_VLA__
або підтримку VLA. Це дуже дивне рішення.