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. J'ai essayé de mettre en œuvre les techniques que j'ai vues sur différents fils de discussion et sur Stack Overflow (telles que Tableau de structures en C y Initialiser un tableau de structures en C ), mais toutes n'étaient pas applicables.
Informations complémentaires pour ceux qui ont lu jusqu'ici : Je n'ai pas besoin que tout cela soit dynamique, je connais/définis la taille de tout à l'avance. J'ai également besoin qu'il s'agisse d'un tableau global car j'y accède dans plusieurs méthodes différentes qui ont des arguments définis (par ex, GLUT ).
C'est ainsi que 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'entre elles est le tableau de cette structure (en gros, si je ne suis pas trop clair dans mon discours embrouillé, la ligne ci-dessous est au-dessus de ce qui précède) :
struct body bodies[n];
Juste pour que vous sachiez, n
est quelque chose que j'ai légitimement défini (c'est-à-dire #define n 1
).
J'utilise ce tableau dans plusieurs méthodes différentes, mais la plus simple et la moins gourmande en espace 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 que je rencontre actuellement est la suivante 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 situé au-dessus de int main(void)
mais dans la même *.c
fichier.