Ошибка «элемент инициализатора не является константой» при попытке инициализировать переменную с помощью const

Я получаю сообщение об ошибке в строке 6 (инициализация my_foo для foo_init) следующей программы, и я не уверен, что понимаю почему.

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;
}

Имейте в виду, что это упрощенная версия большого многофайлового проекта, над которым я работаю. Цель состояла в том, чтобы в объектном файле была одна константа, которую несколько файлов могли бы использовать для инициализации структуры состояний. Так как это встроенная цель с ограниченными ресурсами и структура не такая маленькая, я не хочу иметь несколько копий исходного кода. Я бы предпочел не использовать:

#define foo_init { 1, 2, 3 }

Я также пытаюсь написать переносимый код, поэтому мне нужно решение, которое действительно C89 или C99.

Связано ли это с ORG в объектном файле? То, что инициализированные переменные входят в одну ORG и инициализируются путем копирования содержимого второй ORG?

Может быть, мне просто нужно изменить свою тактику и сделать так, чтобы функция инициализации делала все копии при запуске. Разве есть другие идеи там?

Ответы на вопрос(1)

Ваш ответ на вопрос