Гибкая поддержка элементов массива должна быть независимой от поддержки VLA. Фактически, можно использовать гибкие элементы массива до того, как стандарт C99 дал им имя, объявив массив нулевой длины в конце struct
.
По сути, единственное, что вам нужно сделать для поддержки гибкого члена массива, это изменить компилятор для поддержки синтаксиса flexible[]
.
Напротив, поддержка VLA требует гораздо больше усилий:
- Автоматическое распределение больше не может выполняться во время компиляции
sizeof
оператор должен быть изменен для поддержки оценки во время выполнения
- Для сохранения размера доступного массива должна быть разработана специальная структура
Эти точки реализации могут быть достаточно сложными, чтобы разработчик компилятора решил не реализовывать VLA.