Saya mendapatkan kesalahan pada baris 6 (inisialisasi my_foo ke foo_init) dari program berikut dan saya tidak yakin saya mengerti mengapa.
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;
}
Ingatlah ini adalah versi sederhana dari proyek multi-file yang lebih besar yang saya kerjakan. Tujuannya adalah untuk memiliki konstanta tunggal dalam file objek, yang dapat digunakan beberapa file untuk menginisialisasi struktur keadaan. Karena ini merupakan target yang disematkan dengan sumber daya terbatas dan struct tidak terlalu kecil, saya tidak ingin banyak salinan sumber. Saya lebih suka tidak menggunakan:
#define foo_init { 1, 2, 3 }
Saya juga mencoba menulis kode portabel, jadi saya butuh solusi yang valid C89 atau C99.
Apakah ini ada hubungannya dengan ORG dalam file objek? Variabel yang diinisialisasi masuk ke dalam satu ORG dan diinisialisasi dengan menyalin isi ORG kedua?
Mungkin saya hanya perlu mengubah taktik saya, dan memiliki fungsi inisialisasi melakukan semua salinan saat startup. Kecuali ada ide lain di luar sana?