Estoy muy a menudo confunden al volver a C por la incapacidad para crear una matriz usando la siguiente pauta de inicialización ...El modificador const en C
const int SOME_ARRAY_SIZE = 6;
const int myArray[SOME_ARRAY_SIZE];
Mi comprensión del problema es que la const el operador no garantiza la const-ness, sino que simplemente afirma que el valor apuntado por SOME_ARRAY_SIZE no cambiará en el tiempo de ejecución. Pero, ¿por qué el compilador no puede asumir que el valor es constante en el momento de la compilación? Dice 6 allí mismo en el código fuente ...
Creo que me falta algo fundamental en mi comprensión fundamental de C. Alguien me ayude aquí. :)
[ACTUALIZACIÓN] Después de leer un poco más sobre C99 y arreglos de longitud variable, creo que entiendo esto un poco mejor. Lo que intentaba crear era una matriz de longitud variable: const no crea una constante de tiempo de compilación, sino más bien una constante de tiempo de ejecución. Por lo tanto, estaba inicializando una matriz de longitud variable, que solo es válida en C99 en un alcance de función/bloque. Una matriz de longitud variable en el alcance del archivo es imposible ya que el compilador no puede asignar una dirección de memoria fija a una matriz ilimitada. [/ UPDATE]
Por favor, aclare si está preguntando acerca de tales declaraciones en el alcance local o alcance global, ya que la respuesta es diferente en cada caso. –
Disculpa, esta es una declaración con ámbito global. – mmccomb