Tôi gặp lỗi trên dòng 6 (khởi tạo my_foo thành foo_init) của chương trình sau và tôi không chắc tại sao tôi hiểu tại sao.
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;
}
Hãy nhớ rằng đây là phiên bản đơn giản hóa của một dự án nhiều tệp lớn hơn mà tôi đang làm việc. Mục tiêu là có một hằng số duy nhất trong tệp đối tượng, rằng nhiều tệp có thể sử dụng để khởi tạo cấu trúc trạng thái. Vì đó là mục tiêu được nhúng với tài nguyên hạn chế và cấu trúc không nhỏ, tôi không muốn có nhiều bản sao của nguồn. Tôi không muốn sử dụng:
#define foo_init { 1, 2, 3 }
Tôi cũng đang cố gắng viết mã di động, vì vậy tôi cần một giải pháp hợp lệ là C89 hoặc C99.
Điều này có liên quan đến ORG trong một tệp đối tượng không? Các biến được khởi tạo đó đi vào một ORG và được khởi tạo bằng cách sao chép nội dung của ORG thứ hai?
Có lẽ tôi chỉ cần thay đổi chiến thuật của mình và có chức năng khởi tạo để thực hiện tất cả các bản sao khi khởi động. Trừ khi có những ý tưởng khác ngoài kia?