Ho sentito leggende che variano da "dovrebbe essere opzionale in quanto alcuni piccoli compilatori dovrebbero essere in grado di essere compatibili con C11 senza VLA" a "è stato un errore sul primo posto". Non ho mai avuto una risposta vera e definitiva a questo, però. In definitiva, non credo che nessuno ne abbia davvero uno come motivo (presumendo - e sperando - ce ne sia uno) non è mai stato divulgato (per quanto riguarda le mie vecchie ricerche).
Dal capitolo 4 (pagina 13) di Rationale for International Standard - Programming Languages - C 5.10 (2003)
By defining conforming implementations in terms of the programs they accept, the Standard leaves open the door for a broad class of extensions as part of a conforming implementation. By defining both conforming hosted and conforming freestanding implementations, the Standard recognizes the use of C to write such programs as operating systems and ROM-based applications, as well as more conventional hosted applications. Beyond this two-level scheme, no additional subsetting is defined for C, since the C89 Committee felt strongly that too many levels dilutes the effectiveness of a standard.
Enfasi mia. Si noti che questa decisione va contro la propria logica. Eppure, un'altra cosa resa facoltativa. Ora puoi ottenere __STDC_NO_VLA__
o supporto VLA. È una decisione molto strana.