Ich versuche, ein Array von Strukturen zu erstellen, wobei jede Struktur einen Himmelskörper darstellt.
Ich habe nicht so viel Erfahrung mit Strukturen, weshalb ich mich entschlossen habe, sie anstelle einer ganzen Reihe von Arrays zu verwenden. Ich stoße jedoch immer wieder auf zahlreiche verschiedene Fehler. Ich habe versucht, die Techniken zu implementieren, die ich in verschiedenen Threads und in StackOverflow gesehen habe (z. B. Array von Strukturen in C und C - Array von Strukturen initialisieren ), aber nicht alle waren anwendbar.
Weitere Informationen für diejenigen, die bisher gelesen haben: Ich brauche nichts davon, um dynamisch zu sein, ich kenne / definiere die Größe von allem im Voraus. Ich brauche dies auch, um ein globales Array zu sein, da ich mit verschiedenen Methoden, die Argumente definiert haben (dh GLUT-Methoden), darauf zugreife.
So definiere ich die Struktur in meinem Header:
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
Ich habe eine Liste anderer globaler Variablen, die ich definiere, bevor ich das Innere der Struktur definiere, und eine davon ist das Array dieser Struktur (im Grunde genommen, wenn ich in meiner beschlagenen Sprache zu unklar bin, die folgende Zeile ist über dem Zeug oben):
struct body bodies[n];
Nur damit Sie wissen, n
ist etwas, das ich legitim definiert habe (dh #define n 1
).
Ich verwende dieses Array in verschiedenen Methoden, aber die einfachste und platzsparendste ist eine vereinfachte Form meiner Hauptmethode. Hier initialisiere ich alle Variablen in jeder der Strukturen, um die Variablen sicher festzulegen, bevor ich sie auf irgendeine Weise ändere:
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;
}
Der aktuelle Fehler, mit dem ich konfrontiert bin, ist, nbody.c:32:13: error: array type has incomplete element type
wo in Zeile 32 das Array der Strukturen erstellt wird.
Eine letzte Klarstellung, mit Header meine ich das Leerzeichen darüber, int main(void)
aber in derselben *.c
Datei.
struct body bodies[n];
vor derstruct body {}
Erklärung?