O erro “elemento inicializador não é constante” ao tentar inicializar a variável com const

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í?

questionAnswers(4)

yourAnswerToTheQuestion