Ich erhalte eine Fehlermeldung in Zeile 6 (initialisiere my_foo auf foo_init) des folgenden Programms und bin mir nicht sicher, warum.
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;
}
Beachten Sie, dass dies eine vereinfachte Version eines größeren Projekts mit mehreren Dateien ist, an dem ich arbeite. Das Ziel war es, eine einzige Konstante in der Objektdatei zu haben, mit der mehrere Dateien eine Statusstruktur initialisieren können. Da es sich um ein eingebettetes Ziel mit begrenzten Ressourcen handelt und die Struktur nicht so klein ist, möchte ich nicht mehrere Kopien der Quelle. Ich würde es vorziehen, nicht zu verwenden:
#define foo_init { 1, 2, 3 }
Ich versuche auch, portablen Code zu schreiben, daher benötige ich eine Lösung, die C89 oder C99 gültig ist.
Hat dies mit den ORGs in einer Objektdatei zu tun? Dass initialisierte Variablen in eine ORG gehen und durch Kopieren des Inhalts einer zweiten ORG initialisiert werden?
Vielleicht muss ich nur meine Taktik ändern und alle Kopien beim Start von einer Initialisierungsfunktion ausführen lassen. Es sei denn, es gibt andere Ideen da draußen?