Я намагаюся створити безліч структур, де кожна структура представляє небесне тіло.
У мене не так багато досвіду зі структурами, саме тому я вирішив спробувати використовувати їх замість цілої маси масивів. Однак я продовжую натрапляти на численні різні помилки. Я намагався реалізувати прийоми, які я бачив у різних потоках та на StackOverflow (наприклад, Масив структур у C та C - ініціалізувати масив структур ), проте не всі з них були застосовні.
Додаткова інформація для тих, хто читав це далеко: мені не потрібно нічого з цього, щоб бути динамічним, я знаю / визначаю розмір всього заздалегідь. Мені також потрібно, щоб це був глобальний масив, оскільки я отримую доступ до нього у декількох різних методах, які мають визначені аргументи (тобто методи GLUT).
Ось як я визначаю структуру в моєму заголовку:
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
У мене є список інших глобальних змінних, які я визначаю перед тим, як визначити інтер'єр структури, і одним із них є масив цієї структури (в основному, якщо я занадто незрозумілий під час мого затуманеного виступу, рядок нижче знаходиться над матеріалом вище):
struct body bodies[n];
Тільки щоб ви знали, n
це те, що я законно визначив (тобто #define n 1
).
Я використовую цей масив кількома різними методами, але найпростіший і найменш витратний простір - це спрощена форма мого основного. Тут я ініціалізую всі змінні в кожній зі структур, щоб просто встановити змінні для певних, перш ніж я їх якось модифікую:
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;
}
Поточна помилка, з якою я стикаюся, полягає в тому, що в nbody.c:32:13: error: array type has incomplete element type
рядку 32 я створюю масив структур.
Останнє роз’яснення, під заголовком я маю на увазі пробіл вище, int main(void)
але в тому ж *.c
файлі.
struct body bodies[n];
передstruct body {}
декларацією?