Quando os VLAs foram introduzidos em C 1999, eu pensei que era uma grande inovação para o idioma. No entanto, depois de saber que ele foi tornado opcional em C 2011, pergunto-me o que levou à sua mudança de status e se isso significa que o recurso está realmente voltado para a obsolescência. Em caso afirmativo, existe uma noção equivalente de gerenciamento automático de dados de tamanho dinâmico que está sendo considerado para substituí-lo?
Tentei encontrar o documento de justificativa do C 2011, mas ele ainda não parece ter sido publicado.
c
language-features
c11
jxh
fonte
fonte
Respostas:
Ouvi lendas que variam de "deve ser opcional, pois alguns pequenos compiladores devem ser compatíveis com C11 sem VLAs" a "foi um erro em primeiro lugar". Eu nunca tive uma resposta verdadeira e definitiva para isso, no entanto. Por fim, não acredito que alguém realmente tenha um como o motivo (supondo - e esperando - que exista um) nunca ter sido divulgado (tanto quanto minhas antigas pesquisas).
Do capítulo 4 (página 13) da justificativa para o padrão internacional - linguagens de programação - C 5.10 (2003)
Ênfase minha. Observe que esta decisão é contrária à própria lógica. No entanto, outra coisa se tornou opcional. Agora você recebe
__STDC_NO_VLA__
suporte ou VLA. É uma decisão muito estranha.fonte
Tanto quanto eu posso determinar a partir dos documentos do comitê público (em particular N1395 ), uma das principais razões para tornar os VLAs (juntamente com aritmética e rosqueamento complexos) opcionais foi possibilitar a criação de compiladores C em conformidade para pequenos processadores embarcados.
A tendência era que os fornecedores de compiladores voltados para sistemas embarcados permanecessem no padrão C90, devido à introdução desses grandes recursos que seus clientes não estavam solicitando.
fonte