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.
main
for "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 ++.
y
e x
como const
? Você precisa modificar o valor de y
ou x
? Espero que não, porque isso levanta muitas questões sobre o tamanho arr
e arr2
deve ser - principalmente no que diz respeito à ordem de inicialização. (Dica: eles devem ser constantes)
--std=c++17
(ou --std=c++11
se for um compilador antigo) e a compilação falhará.
main
não sendo legal, ele usa a extensão VLA.