Recibo un error en la línea 6 (inicializar my_foo en foo_init) del siguiente programa y no estoy seguro de entender por qué.
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;
}
Tenga en cuenta que esta es una versión simplificada de un proyecto de varios archivos más grande en el que estoy trabajando. El objetivo era tener una sola constante en el archivo de objeto, que múltiples archivos podrían usar para inicializar una estructura de estado. Como es un objetivo incrustado con recursos limitados y la estructura no es tan pequeña, no quiero varias copias de la fuente. Prefiero no usar:
#define foo_init { 1, 2, 3 }
También estoy tratando de escribir código portátil, así que necesito una solución que sea válida C89 o C99.
¿Tiene esto que ver con los ORG en un archivo de objeto? ¿Que las variables inicializadas entran en un ORG y se inicializan copiando el contenido de un segundo ORG?
Tal vez solo necesite cambiar mi táctica y tener una función de inicialización para hacer todas las copias al inicio. ¿A menos que haya otras ideas por ahí?