J'obtiens une erreur à la ligne 6 (initialisez my_foo à foo_init) du programme suivant et je ne suis pas sûr de comprendre pourquoi.
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;
}
Gardez à l'esprit qu'il s'agit d'une version simplifiée d'un plus grand projet multi-fichiers sur lequel je travaille. Le but était d'avoir une seule constante dans le fichier objet, que plusieurs fichiers pourraient utiliser pour initialiser une structure d'état. Comme il s'agit d'une cible intégrée avec des ressources limitées et que la structure n'est pas si petite, je ne veux pas plusieurs copies de la source. Je préfère ne pas utiliser:
#define foo_init { 1, 2, 3 }
J'essaie également d'écrire du code portable, j'ai donc besoin d'une solution valide C89 ou C99.
Cela a-t-il à voir avec les ORG dans un fichier objet? Que les variables initialisées vont dans un ORG et sont initialisées en copiant le contenu d'un deuxième ORG?
Peut-être que j'aurai juste besoin de changer de tactique et qu'une fonction d'initialisation fasse toutes les copies au démarrage. À moins qu'il n'y ait d'autres idées là-bas?