W wierszu 6 pojawia się błąd (inicjowanie my_foo do foo_init) następującego programu i nie jestem pewien, czy rozumiem dlaczego.
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;
}
Pamiętaj, że jest to uproszczona wersja większego, złożonego z wielu plików projektu, nad którym pracuję. Celem było posiadanie jednej stałej w pliku obiektowym, której wiele plików mogłoby użyć do zainicjowania struktury stanu. Ponieważ jest to osadzony cel z ograniczonymi zasobami, a struktura nie jest tak mała, nie chcę wielu kopii źródła. Wolałbym nie używać:
#define foo_init { 1, 2, 3 }
Próbuję również napisać kod przenośny, więc potrzebuję rozwiązania, które jest prawidłowe C89 lub C99.
Czy ma to związek z ORG w pliku obiektowym? Czy zainicjowane zmienne wchodzą w jeden ORG i są inicjowane poprzez skopiowanie zawartości drugiego ORG?
Może po prostu będę musiał zmienić moją taktykę i mieć funkcję inicjującą, która wykona wszystkie kopie podczas uruchamiania. Chyba że istnieją inne pomysły?