|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2006
Messaggi: 117
|
[C / VS C++ 2008] Warning funzione non definita
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?!?! |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jun 2006
Messaggi: 117
|
Piccolo Update:
Modifcando il livello di severita' del warning del compilatore da W3 a W2 (in pratica abbassando la severita') il warning sparisce. Ma a livello pratico quello che ho notato e' che la funzionalita' di auto-completamento di Visual Studio non si comporta correttamente per la funzione che prima generava il warning. In pratica per tutte le altre funzioni, l'auto-completamento mi mostra i nomi suggeriti in un menu a tendina e una volta selezionata la funzione desiderata, appare un piccolo tooltip che mi indica esattamente il prototipo della funzione (es. int printf(const *char Format..)). Per quella maledetta funzione che genera il warning invece, l'auto-completamente funziona parzialmente, cioe' la funzione appare fra quelle suggerite nel menu a tendina, ma una volta selezionata, non compare il tooltip con le indicazioni del prototipo della funzione. Misterioso... |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Devi includere così:
#include "info_key.h" |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:34.



















