Estou tentando fazer uma série de estruturas onde cada estrutura representa um corpo celeste.
Não tenho muita experiência com structs, por isso decidi tentar usá-los em vez de um monte de arrays. No entanto, continuo encontrando vários erros diferentes. Tentei implementar as técnicas que vi em vários threads e no StackOverflow (como Array de structs em C e C - inicializar array de structs ), mas nem todos eram aplicáveis.
Mais informações para quem leu até aqui: Não preciso que nada disso seja dinâmico, sei / defino o tamanho de tudo de antemão. Eu também preciso que isso seja uma matriz global, pois estou acessando isso em vários métodos diferentes que têm argumentos definidos (ou seja, métodos GLUT).
É assim que estou definindo a estrutura em meu cabeçalho:
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
Eu tenho uma lista de outras variáveis globais que estou definindo antes de definir o interior da estrutura, e uma delas é a matriz dessa estrutura (basicamente, se estou sendo muito confuso em minha fala nebulosa, a linha abaixo está acima do material acima):
struct body bodies[n];
Só para você saber, n
é algo que eu defini legitimamente (isto é #define n 1
).
Eu uso esse array em vários métodos diferentes, mas o mais fácil e que menos ocupa espaço é uma forma simplificada do meu principal. Aqui eu inicializo todas as variáveis em cada uma das estruturas, apenas para definir as variáveis com certeza antes de modificá-las de alguma forma:
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;
}
O erro atual que estou enfrentando é nbody.c:32:13: error: array type has incomplete element type
onde a linha 32 é onde estou criando a matriz das estruturas.
Um último esclarecimento, por cabeçalho quero dizer o espaço acima, int main(void)
mas no mesmo *.c
arquivo.
struct body bodies[n];
antes dastruct body {}
declaração?