Eu recebo um erro na linha 6 (inicialize my_foo para foo_init) do programa a seguir e não sei se entendi o porquê.
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;
}
Lembre-se de que esta é uma versão simplificada de um projeto maior com vários arquivos em que estou trabalhando. O objetivo era ter uma única constante no arquivo de objeto, que vários arquivos pudessem usar para inicializar uma estrutura de estado. Como é um destino incorporado com recursos limitados e a estrutura não é tão pequena, não quero várias cópias da fonte. Prefiro não usar:
#define foo_init { 1, 2, 3 }
Também estou tentando escrever código portátil, por isso preciso de uma solução que seja válida C89 ou C99.
Isso tem a ver com os ORGs em um arquivo de objeto? Que variáveis inicializadas entram em um ORG e são inicializadas copiando o conteúdo de um segundo ORG?
Talvez eu precise mudar minha tática e ter uma função de inicialização para fazer todas as cópias na inicialização. A menos que haja outras idéias por aí?