Sto cercando di creare un array di strutture in cui ogni struttura rappresenta un corpo celeste.
Non ho molta esperienza con le strutture, motivo per cui ho deciso di provare a usarle invece di un intero gruppo di array. Tuttavia, continuo a incorrere in numerosi errori diversi. Ho provato a implementare le tecniche che ho visto su vari thread e su StackOverflow (come Array of structs in C e C - initialize array of structs ), tuttavia non tutte erano applicabili.
Ulteriori informazioni per chi ha letto fin qui: non ho bisogno di niente di tutto questo per essere dinamico, conosco / definisco la dimensione di tutto in anticipo. Ho anche bisogno che questo sia un array globale poiché accedo a questo in diversi metodi diversi che hanno argomenti definiti (cioè metodi GLUT).
Ecco come sto definendo la struttura nella mia intestazione:
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
Ho un elenco di altre variabili globali che sto definendo prima di definire l'interno della struttura, e una di questeèl'array di questa struttura (in pratica, se sono troppo poco chiaro nel mio parlare appannato, la riga sotto è al di sopra delle cose sopra):
struct body bodies[n];
Solo così sai, n
è qualcosa che ho legittimamente definito (cioè #define n 1
).
Uso questo array in diversi metodi, ma il più semplice e che occupa meno spazio è una forma semplificata del mio main. Qui inizializzo tutte le variabili in ciascuna delle strutture, solo per impostare le variabili per certo prima di modificarle in qualche modo:
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'errore corrente che sto affrontando è nbody.c:32:13: error: array type has incomplete element type
dove la riga 32 è dove sto creando l'array degli struct.
Un'ultima precisazione, per intestazione intendo lo spazio sopra int main(void)
ma nello stesso *.c
file.
struct body bodies[n];
prima dellastruct body {}
dichiarazione?