Te sugerimos que pruebes esta resolución en un ambiente controlado antes de pasarlo a producción, saludos.
Solución:
Palabra clave en lenguaje C const
no tiene nada que ver con constantes. En lenguaje C, por definición, el término “constante” se refiere a valores literales y constantes de enumeración. Esto es lo que tienes que usar si realmente necesitas un constante: utilice un valor literal (defina un macro para darle un nombre a su constante), o use una constante de enumeración.
(Lea aquí para obtener más detalles: ¿Prefiero las constantes sobre las definiciones?)
Además, en C99 y versiones posteriores del lenguaje es posible usar valores no constantes como array tamaños para arreglos locales. Eso significa que su código debe compilarse en C moderno aunque su size
no es una constante. Pero aparentemente está usando un compilador más antiguo, por lo que en su caso
#define SIZE 10
es el camino correcto a seguir.
La respuesta está en otra pregunta de stackoverflow, AQUÍ
es porque los objetos In C declarados con el modificador const no son true
constantes Un mejor nombre para const probablemente sería solo lectura; lo que realmente significa es que el compilador no le permitirá cambiarlo. y tu necesitas true constantes para inicializar objetos con static almacenamiento (sospecho que regs_to_read es global).
Ten en cuenta mostrar esta sección si te valió la pena.