Tengo dos archivos c, foo.c con la funcionalidad y test_foo.c que prueban las funciones de foo.c.Cómo declarar extern typedef struct?
¿Hay alguna manera de acceder a struct typedef BAR
que definí en foo.c en test_foo.c sin usar un archivo de cabecera? Hasta ahora, pude evitar un archivo h para que todo el programa consistiera en foo.c. Gracias.
foo.c
typedef struct BAR_{...} bar;
BAR *bar_new(...) {..}
test_foo.c
extern BAR *bar_new(...)
error: expected declaration specifiers or ‘...’ before ‘BAR’
Mover la definición al archivo de encabezado es la solución correcta solo si test_foo.c (o cualquier otro módulo fuera de foo.c) necesita acceder a la estructura de contenido en sí. Si es un ADT o por algún otro motivo test_foo.c no necesita las partes internas del tipo, creo que una declaración directa es una mejor solución. – harald
Por ahora, acabo de copiar la definición en el otro archivo c. – Framester
Estoy haciendo lo mismo: estoy desarrollando un arnés de prueba que se supone que se ajusta al código de producción. En el código de producción, la definición de estructura no tiene ningún negocio que sea pública y debe ser enterrada. Por lo tanto, tuve que copiar la definición en mi arnés de prueba. Esto es una duplicación, pero mi enlazador es lo suficientemente inteligente como para darme advertencias si uno cambia pero no el otro. – Nick