ฉันกำลังพยายามสร้างอาร์เรย์ของโครงสร้างโดยแต่ละโครงสร้างแทนเทห์ฟากฟ้า
ฉันไม่มีประสบการณ์กับโครงสร้างมากขนาดนั้นซึ่งเป็นเหตุผลว่าทำไมฉันจึงตัดสินใจลองใช้มันแทนอาร์เรย์ทั้งหมด อย่างไรก็ตามฉันยังคงพบข้อผิดพลาดต่างๆมากมาย ฉันได้พยายามใช้เทคนิคที่ฉันเคยเห็นในเธรดต่างๆและบน StackOverflow (เช่นArray of structs ใน 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
)
ฉันใช้อาร์เรย์นี้ในหลายวิธี แต่วิธีที่ง่ายที่สุดและใช้พื้นที่น้อยที่สุดคือรูปแบบที่เรียบง่ายของ main ของฉัน ที่นี่ฉันเริ่มต้นตัวแปรทั้งหมดในแต่ละโครงสร้างเพียงเพื่อตั้งค่าตัวแปรให้แน่นอนก่อนที่ฉันจะแก้ไขในบางวิธี:
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 {}
ประกาศไม่ใช่เหรอ