Em C ++, tentei declarar uma matriz global de algum tamanho. Eu recebi o erro:
O limite da matriz não é uma constante inteira antes do token ']'
Mas quando declarei uma matriz do mesmo tipo na main()função, ela está funcionando bem.
Por que existe um comportamento diferente aqui?
int y=5;
int arr[y]; //When I comment this line it works fine
int main()
{
int x=5;
int arr2[x]; // This line doesn't show any error.
}
Edit: Muitos estão sugerindo que esta pergunta é uma duplicata do Obtendo o erro "array bound não é uma constante inteira antes do símbolo ']'" . Mas essa pergunta não responde por que há um comportamento diferente.
mainfor "aceito" pelo seu compilador: você está usando a extensão do compilador, que permite que os VLAs sejam compilados, mesmo que não sejam suportados pelo padrão C ++.
ye xcomo const? Você precisa modificar o valor de you x? Espero que não, porque isso levanta muitas questões sobre o tamanho arre arr2deve ser - principalmente no que diz respeito à ordem de inicialização. (Dica: eles devem ser constantes)
--std=c++17(ou --std=c++11se for um compilador antigo) e a compilação falhará.
mainnão sendo legal, ele usa a extensão VLA.