Salve,
sto usando Visual Studio 2008 C++ Express per un progetto in C. Come sono solito fare ho diviso i sorgenti in moduli .c e .h.
Fino ad oggi tutto ok, nessun problema particolare. Poi all'improvviso mi trovo in questa situazione:
In un modulo "info_table.c" devo richiamare una funzione il cui corpo e' definito in "info_key.c" e il prototipo e' quindi dichiarato in "info_key.h". Quindi cosa faccio, beh semplicemente aggiungo una "#include <info_key.h>" in "info_table.c", no?!? Beh magia, il compilatore mi dice che la funzione che voglio chiamare non e' definita e che verra' intesa come funzione esterna che ritorna un int (warning C4013).
La prima cosa assurda e' appunto che il sorgente info_table.c, nonostante la include di info_key.h, non trovi la definizione della funzione che voglio utilizzare.
La seconda cosa magnifica e' che in info_key.c e info_key.h sono definite diverse altre funzioni oltre a quella in questione. Cosi' ho provato ad usare una di queste altre funzioni e, magia, compila senza quel warning. Ho stra-controllato che il nome della funzione sia giusto. Non ci sono errori. Sapete cosa ho fatto allora? Ho definito un'altra funzione ancora, sempre in info_key.c e info_key.h e usandola in info_table.c ritorna il warning suddetto. Quindi cosa sta succedendo? In pratica tutte le funzioni definite fino a ieri in info_key.c/.h posso usarle senza warning, ma tutte le funzioni nuove che potrei dover definire mi danno quel maledetto errore di compilazione.
L'ultima cosa incredibile e' che, prendendo i sorgenti che producono sto warning e copiandoli in un nuovo progetto di Visual Studio e copiando la configurazione del nuovo progetto da quella del progetto che produce il warning... tutto compila perfettamente!!! Ma che caspita succede?!?!