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