Tôi đã nghe các truyền thuyết khác nhau từ "nó nên là tùy chọn vì một số trình biên dịch nhỏ sẽ có thể tuân thủ C11 mà không cần VLAs" thành "đó là một lỗi ở nơi đầu tiên". Tôi chưa bao giờ có một câu trả lời đúng và chắc chắn cho điều này, mặc dù. Cuối cùng, tôi không tin bất cứ ai thực sự có một lý do (giả sử - và hy vọng - có một) không bao giờ được tiết lộ (theo như các tìm kiếm cũ của tôi đã đi).
Từ Chương 4 (trang 13) Cơ sở lý luận cho tiêu chuẩn quốc tế - Ngôn ngữ lập trình - C 5.10 (2003)
Bằng cách xác định việc triển khai tuân thủ theo các chương trình mà họ chấp nhận, Tiêu chuẩn sẽ mở ra cơ hội cho một lớp mở rộng rộng lớn như là một phần của việc thực hiện tuân thủ. Bằng cách xác định cả việc thực hiện tự do lưu trữ và tuân thủ tuân thủ, Tiêu chuẩn nhận ra việc sử dụng C để viết các chương trình như hệ điều hành và ứng dụng dựa trên ROM, cũng như các ứng dụng được lưu trữ thông thường hơn. Ngoài sơ đồ hai cấp này, không có tập hợp con bổ sung nào được xác định cho C, vì Ủy ban C89 cảm thấy mạnh mẽ rằng có quá nhiều cấp làm giảm hiệu quả của một tiêu chuẩn .
Nhấn mạnh mỏ. Lưu ý rằng quyết định này đi ngược lại lý do của chính họ. Tuy nhiên, một điều khác làm tùy chọn. Bây giờ bạn có thể nhận được __STDC_NO_VLA__
hoặc hỗ trợ VLA. Đó là một quyết định rất kỳ quặc.