Próbuję stworzyć tablicę struktur, w których każda struktura reprezentuje ciało niebieskie.
Nie mam zbyt dużego doświadczenia ze strukturami, dlatego zdecydowałem się spróbować ich użyć zamiast całej masy tablic. Jednak ciągle napotykam na wiele różnych błędów. Próbowałem zaimplementować techniki, które widziałem w różnych wątkach i na StackOverflow (takie jak Array of structs w C i C - zainicjuj tablicę struktur ), jednak nie wszystkie z nich miały zastosowanie.
Dalsze informacje dla tych, którzy przeczytali do tej pory: nie potrzebuję tego, aby być dynamicznym, wiem / określam rozmiar wszystkiego wcześniej. Potrzebuję również, aby była to tablica globalna, ponieważ uzyskuję do niej dostęp w kilku różnych metodach, które mają zdefiniowane argumenty (tj. Metody GLUT).
Oto jak definiuję strukturę w moim nagłówku:
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
Mam listę innych zmiennych globalnych, które definiuję przed zdefiniowaniem wnętrza struktury, a jedną z nich jest tablica tej struktury (w zasadzie, jeśli jestem zbyt niejasny w moim zamglonym mowie, wiersz poniżej jest nad rzeczami powyżej):
struct body bodies[n];
Dla twojej wiadomości n
jest to coś, co zgodnie z prawem zdefiniowałem (tj #define n 1
.).
Używam tej tablicy w kilku różnych metodach, ale najłatwiejszą i najmniej zajmującą miejsce jest uproszczona forma mojego main. Tutaj inicjalizuję wszystkie zmienne w każdej ze struktur, aby ustawić zmienne na pewne, zanim je zmodyfikuję:
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;
}
Bieżący błąd, z którym się spotykam, to miejsce, w nbody.c:32:13: error: array type has incomplete element type
którym linia 32 jest miejscem, w którym tworzę tablicę struktur.
Ostatnie wyjaśnienie, przez nagłówek mam na myśli spację powyżej, int main(void)
ale w tym samym *.c
pliku.
struct body bodies[n];
przedstruct body {}
deklaracją?