Cuando se introdujeron los VLA en C 1999, pensé que era una gran innovación para el lenguaje. Sin embargo, habiendo aprendido que se hizo opcional en C 2011, me pregunto qué llevó a su cambio de estado, y si significa que la característica en realidad se dirige a la obsolescencia. Si es así, ¿existe una noción equivalente de gestión automática de datos de tamaño dinámico que se considere reemplazarla?
Intenté encontrar el documento de justificación de C 2011, pero parece que aún no se ha publicado.
c
language-features
c11
jxh
fuente
fuente
Respuestas:
He escuchado que las leyendas varían de "debería ser opcional, ya que algunos compiladores pequeños deberían poder cumplir con C11 sin VLA" a "fue un error en primer lugar". Sin embargo, nunca obtuve una respuesta verdadera y definitiva a esto. En última instancia, no creo que nadie realmente tenga uno, ya que la razón (suponiendo, y esperando, que haya uno) nunca se reveló (en lo que respecta a mis búsquedas anteriores).
Del Capítulo 4 (página 13) de Justificación de la Norma Internacional - Lenguajes de programación - C 5.10 (2003)
El énfasis es mío. Tenga en cuenta que esta decisión va en contra de su propia lógica. Sin embargo, otra cosa hecha opcional. Ahora obtienes
__STDC_NO_VLA__
o soporte VLA. Es una decisión muy extraña.fuente
Por lo que puedo determinar a partir de los documentos del comité público (en particular N1395 ), una de las principales razones para hacer que los VLA (junto con la aritmética compleja y el subprocesamiento) sean opcionales fue hacer posible la creación de compiladores C conformes para pequeños procesadores integrados.
La tendencia era que los proveedores de compiladores que apuntan a sistemas integrados permanecían en el estándar C90, debido a la introducción de esas grandes características que sus clientes no pedían.
fuente