Ho due file c, foo.c con la funzionalità e test_foo.c che testano le funzioni di foo.c.Come dichiarare extern typedef struct?
C'è un modo per accedere alla struct typedef BAR
definito in foo.c in test_foo.c senza utilizzare un file di intestazione? Finora, sono stato in grado di evitare un file h in modo che l'intero programma fosse costituito da foo.c. Grazie.
foo.c
typedef struct BAR_{...} bar;
BAR *bar_new(...) {..}
test_foo.c
extern BAR *bar_new(...)
error: expected declaration specifiers or ‘...’ before ‘BAR’
Spostare la definizione nel file di intestazione è la soluzione giusta solo se test_foo.c (o qualsiasi altro modulo esterno a foo.c) deve accedere alla struttura del contenuto stesso. Se si tratta di un ADT o per qualche altra ragione, test_foo.c non ha bisogno dei componenti interni del tipo, penso che una dichiarazione forward sia una soluzione migliore. – harald
Per ora, ho appena copiato la definizione nell'altro file c. – Framester
Sto facendo lo stesso - Sto sviluppando un cablaggio di test che dovrebbe avvolgere il codice di produzione. Nel codice di produzione la definizione della struttura non ha carattere pubblico e dovrebbe essere seppellita. Pertanto ho dovuto copiare la definizione nella mia bardatura di prova. Questa è una duplicazione ma il mio linker è abbastanza intelligente da darmi degli avvisi se uno cambia ma non l'altro. – Nick