Я получаю сообщение об ошибке в строке 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?
Может быть, мне просто нужно изменить свою тактику и сделать так, чтобы функция инициализации делала все копии при запуске. Разве есть другие идеи?