J'essaie de créer un tableau de structures où chaque structure représente un corps céleste.
Je n'ai pas beaucoup d'expérience avec les structures, c'est pourquoi j'ai décidé d'essayer de les utiliser au lieu de tout un tas de tableaux. Cependant, je continue à rencontrer de nombreuses erreurs différentes. J'ai essayé d'implémenter les techniques que j'ai vues sur divers threads et sur StackOverflow (comme Array of structs en C et C - initialize array of structs ), mais elles n'étaient pas toutes applicables.
Plus d'informations pour ceux qui ont lu jusqu'ici: Je n'ai besoin de rien de tout cela pour être dynamique, je connais / définit la taille de tout à l'avance. J'ai également besoin que ce soit un tableau global car j'y accède dans plusieurs méthodes différentes qui ont défini des arguments (c'est-à-dire les méthodes GLUT).
Voici comment je définis la structure dans mon en-tête:
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
J'ai une liste d'autres variables globales que je définis avant de définir l'intérieur de la structure, et l'une d'elles est le tableau de cette structure (en gros, si je ne suis pas trop clair dans mon discours brumeux, la ligne ci-dessous est au-dessus des éléments ci-dessus):
struct body bodies[n];
Juste pour que vous le sachiez, n
c'est quelque chose que j'ai légitimement défini (ie #define n 1
).
J'utilise ce tableau dans plusieurs méthodes différentes, mais la plus simple et la moins encombrante est une forme simplifiée de mon main. Ici, j'initialise toutes les variables dans chacune des structures, juste pour définir les variables avec certitude avant de les modifier d'une manière ou d'une autre:
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;
}
L'erreur actuelle à laquelle je suis confronté est celle nbody.c:32:13: error: array type has incomplete element type
où la ligne 32 est l'endroit où je crée le tableau des structures.
Une dernière précision, par en-tête j'entends l'espace ci-dessus int main(void)
mais dans le même *.c
fichier.
struct body bodies[n];
avant lastruct body {}
déclaration?