ฉันได้รับข้อผิดพลาดในบรรทัดที่ 6 (เริ่มต้น my_foo เป็น foo_init) ของโปรแกรมต่อไปนี้และฉันไม่แน่ใจว่าฉันเข้าใจว่าทำไม
typedef struct foo_t {
int a, b, c;
} foo_t;
const foo_t foo_init = { 1, 2, 3 };
foo_t my_foo = foo_init;
int main()
{
return 0;
}
โปรดทราบว่านี่เป็นเวอร์ชันที่เรียบง่ายของโครงการหลายไฟล์ขนาดใหญ่ที่ฉันกำลังทำงานอยู่ เป้าหมายคือการมีค่าคงที่เดียวในไฟล์อ็อบเจ็กต์ที่หลายไฟล์สามารถใช้เพื่อเริ่มต้นโครงสร้างสถานะ เนื่องจากเป็นเป้าหมายแบบฝังที่มีทรัพยากร จำกัด และโครงสร้างไม่เล็กฉันจึงไม่ต้องการสำเนาหลายชุด ฉันไม่ต้องการใช้:
#define foo_init { 1, 2, 3 }
ฉันกำลังพยายามเขียนโค้ดแบบพกพาด้วยดังนั้นฉันจึงต้องการโซลูชันที่ใช้ได้กับ C89 หรือ C99
สิ่งนี้เกี่ยวข้องกับ ORG ในไฟล์วัตถุหรือไม่? ตัวแปรเริ่มต้นนั้นไปเป็นหนึ่ง ORG และเริ่มต้นได้โดยการคัดลอกเนื้อหาของ ORG ที่สอง?
บางทีฉันอาจต้องเปลี่ยนชั้นเชิงของฉันและมีฟังก์ชั่นการเริ่มต้นทำสำเนาทั้งหมดเมื่อเริ่มต้น นอกเสียจากว่าจะมีความคิดอื่น ๆ ออกมา?