Saya mencoba membuat array struct di mana setiap struct mewakili benda langit.
Saya tidak memiliki banyak pengalaman dengan struct, itulah sebabnya saya memutuskan untuk mencoba menggunakannya daripada sejumlah array. Namun, saya terus mengalami banyak kesalahan berbeda. Saya telah mencoba menerapkan teknik yang telah saya lihat di berbagai utas dan di StackOverflow (seperti Array dari struct di C dan C - menginisialisasi array struct ), namun tidak semuanya berlaku.
Informasi lebih lanjut bagi mereka yang telah membaca sejauh ini: Saya tidak memerlukan semua ini untuk menjadi dinamis, saya tahu / menentukan ukuran semuanya sebelumnya. Saya juga membutuhkan ini menjadi array global karena saya mengakses ini dalam beberapa metode berbeda yang telah menetapkan argumen (yaitu metode GLUT).
Beginilah cara saya mendefinisikan struct di header saya:
struct body
{
double p[3];//position
double v[3];//velocity
double a[3];//acceleration
double radius;
double mass;
};
Saya memiliki daftar variabel global lain yang saya definisikan sebelum saya mendefinisikan interior struct, dan salah satunya adalah array struct ini (pada dasarnya, jika saya terlalu tidak jelas dalam pembicaraan saya yang berkabut, baris di bawah ini di atas barang di atas):
struct body bodies[n];
Asal tahu saja, n
adalah sesuatu yang telah saya definisikan secara sah (yaitu #define n 1
).
Saya menggunakan array ini dalam beberapa metode berbeda, tetapi yang termudah dan paling sedikit memakan ruang adalah bentuk utama saya yang disederhanakan. Di sini saya menginisialisasi semua variabel di setiap struct, hanya untuk mengatur variabel dengan pasti sebelum saya memodifikasinya dengan beberapa cara:
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;
}
Kesalahan saat ini yang saya hadapi adalah di nbody.c:32:13: error: array type has incomplete element type
mana baris 32 adalah tempat saya membuat array struct.
Klarifikasi terakhir, yang saya maksud dengan header adalah ruang di atas int main(void)
tetapi dalam *.c
file yang sama .
struct body bodies[n];
sebelumstruct body {}
deklarasi?