Я отримую помилку в рядку 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?
Можливо, мені просто потрібно змінити свою тактику і мати функцію ініціалізації робити всі копії при запуску. Якщо немає інших ідей там?