¿Se puede inicializar una matriz bidimensional en C sin tamaño explícito?
Tengo una pregunta con respecto a las matrices bidimensionales en C. Ahora sé (por experiencia del compilador directo) que no puedo inicializar dicha matriz de forma análoga a matrices unidimensionales como esta:
int multi_array[][] = {
{1,2,3,4,5},
{10,20,30,40,50},
{100,200,300,400,500}
};
> compiler output:
gcc -o arrays arrays.c
arrays.c: In function ‘main’:
arrays.c:8:9: error: array type has incomplete element type
La solución más cercana que funciona es proporcionar el número de columnas explícitamente así:
int multi_array[][5] = {
{1,2,3,4,5},
{10,20,30,40,50},
{100,200,300,400,500}
};
Mi pregunta es: ¿se puede hacer bien?sin suministrando el número explícitamente (que, después de todo, el compilador debería poder inferirse a sí mismo)? No estoy hablando de construirlo manualmente conmalloc
o algo más bien algo cercano a lo que intenté. Además, ¿alguien con conocimientos sobre compiladores de C puede explicar desde una perspectiva de bajo nivel por qué mi intento inicial no funciona?
Solía simplegcc
sin opciones no estándar para compilar el código.
Gracias