回答:
「いくつかの小さなコンパイラはVLAなしでC11に準拠できる必要があるため、オプションにする必要がある」から「そもそも間違いだった」まで、さまざまな言い伝えを聞いています。しかし、これに対する真の明確な答えは一度もありません。最終的に、私は誰もが実際にそれを持っているとは思わない(理由があると仮定して-そして期待している-)が決して開示されなかった(私の古い検索に関する限り)。
国際標準の理論的根拠の第4章(13ページ)-プログラミング言語-C 5.10(2003)から
受け入れるプログラムの観点から適合実装を定義することにより、規格は適合実装の一部として広範なクラスの拡張機能への扉を開いたままにします。準拠するホスト型と準拠する自立型実装の両方を定義することにより、標準はCを使用して、オペレーティングシステムやROMベースのアプリケーション、さらに従来のホスト型アプリケーションなどのプログラムを作成することを認識します。C89委員会は、レベルが多すぎると標準の有効性が薄められると強く感じたため、この2レベルのスキームを超えて、Cの追加のサブセットは定義されていません。
強調鉱山。この決定は独自の根拠に反することに注意してください。しかし、別のことがオプションになりました。これで__STDC_NO_VLA__
、VLAのサポートを取得できます。それは非常に奇妙な決定です。
私が公開委員会のドキュメント(特にN1395)から判断できる限り、VLAを(複雑な算術演算とスレッド化とともに)オプションにする主な理由の1つは、小さな組み込みプロセッサ用の適合Cコンパイラを作成できるようにすることでした。
傾向としては、組み込みシステムをターゲットとするコンパイラベンダーは、顧客が求めていなかった大きな機能が導入されたため、C90標準にとどまっています。