En C ++ intenté declarar una matriz global de algún tamaño. Recibí el error:
El conjunto de enlaces no es una constante entera antes del token ']'
Pero cuando declaró una matriz del mismo tipo en la main()función, funciona bien.
¿Por qué hay un comportamiento diferente aquí?
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.
}
Editar: Muchos están sugiriendo que esta pregunta es un duplicado del error Obteniendo "el enlace de matriz no es una constante entera antes del token ']' . Pero esa pregunta no responde por qué hay un comportamiento diferente.
maines "aceptado" por su compilador: está utilizando la extensión del compilador, que permite la compilación de VLA, incluso si no son compatibles con el estándar C ++.
yy xcomo const? ¿Necesita modificar el valor de yo x? Esperemos que no, porque eso plantea muchas preguntas sobre cuán grande arry arr2debería ser, especialmente con la respuesta al orden de inicialización. (Sugerencia: deberían ser constantes)
--std=c++17(o --std=c++11si es un compilador anterior), y la compilación fallará.
main, no es legal, utiliza la extensión VLA.