Estoy tratando de hacer una serie de estructuras donde cada estructura representa un cuerpo celeste.
No tengo tanta experiencia con estructuras, por lo que decidí intentar usarlas en lugar de un montón de matrices. Sin embargo, sigo encontrándome con numerosos errores diferentes. Intenté implementar las técnicas que he visto en varios subprocesos y en StackOverflow (como Matriz de estructuras en C y C - inicializar matriz de estructuras ), sin embargo, no todas eran aplicables.
Más información para los que han leído hasta aquí: No necesito nada de esto para ser dinámico, sé / defino el tamaño de todo de antemano. También necesito que esto sea una matriz global ya que estoy accediendo a esto en varios métodos diferentes que tienen argumentos definidos (es decir, métodos GLUT).
Así es como estoy definiendo la estructura en mi encabezado:
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
Tengo una lista de otras variables globales que estoy definiendo antes de definir el interior de la estructura, y una de ellas es la matriz de esta estructura (básicamente, si no estoy muy claro en mi discurso empañado, la línea de abajo está por encima de lo anterior):
struct body bodies[n];
Para que lo sepas, n
es algo que he definido legítimamente (es decir #define n 1
).
Utilizo esta matriz en varios métodos diferentes, pero el más fácil y que consume menos espacio es una forma simplificada de mi archivo main. Aquí inicializo todas las variables en cada una de las estructuras, solo para establecer las variables con certeza antes de modificarlas de alguna manera:
int a, b;
for(a = 0; a < n; a++)
{
for(b = 0; b < 3; b++)
{
bodies[a].p[b] = 0;
bodies[a].v[b] = 0;
bodies[a].a[b] = 0;
}
bodies[a].mass = 0;
bodies[a].radius = 1.0;
}
El error actual al que me enfrento es nbody.c:32:13: error: array type has incomplete element type
donde la línea 32 es donde estoy haciendo la matriz de estructuras.
Una última aclaración, por cabecera me refiero al espacio de arriba int main(void)
pero en el mismo *.c
archivo.
struct body bodies[n];
antes de lastruct body {}
declaración?