Newsgroup: it.comp.os.linux.development
Titolo: [C] implicit declaration?

Qualcuno sa spiegarmi il significato del messaggio di errore
``implicit declaration of function ...''?  
(Si`, google e` mio amico, ma io mastico poco C e ho solo da risolvere
un problema di compilazione, mentre le guide spiegano per chi lo
mangia o vuol mangiarlo a colazione.)
Massimiliano

``implicit
declaration of function ...''?
Significa che il parser ha incontrato una
funzione che non e` stata definita da nessuna parte, ne come corpo ne come
header (interfaccia).
Se sei fortunato, il linker risolvera`
l'associazione.
Se non vuoi vedere il messaggio di warning dovrai
includerti qualche .h che contiene l'header della funzione in oggetto.
La cosa e`, comunque, sempre piu` corretta, perche` in fase di
compilazione, avendo la specifica dell'interfaccia di una funzione,
potranno essere riscontrati eventuali usi impropri nel passaggio dei
parametri.
Ciao, Sandro.
--------------------------------
Inviato via 
http://usenet.iol.it
 

 includerti qualche .h che contiene l'header della funzione in oggetto.
Warning?  Dunque anche i warning bloccano la compilazione?
Grazie a te e a Nico.
Massimiliano

 ``implicit declaration of function ...''?  
Significa che hai invocato una funzione, ma che il compilatore non ha
mai incontrato tale funzione ne' il suo prototipo.
Soluzione: se e' la funzione di qualche libreria allora includi il
relativo header file #include <xxx.h>; se e' una funzione del tuo
programma allora assicurati che la funzione appaia nel sorgente prima
della sua invocazione.
Ciao,
// Umberto Salsi
//
// 
http://digilander.iol.it/salsi
  --  GnuPG Key ID = BE2C F6CD 77E9 29AE

 nonostante si sia incluso l'header appropriato?
dipende da come viene  fatta l'inclusione, potrebbe esserci un piccolo
problema.
se  il file  header della  funzione  che ti  da problemi  si trova  in
/usr/include o in una  sua sotto-directory, l'inclusione va effettuata
con:
#include <nome.h>
altrimenti,  nel  caso  in cui  il  file  header  faccia parte  di  un
pacchetto che si deve compilare, l'inclusione va fatta con:
#include "nome.h"
magari l'errore potrebbe essere qui.



In genere no, ma dipende dalle opzioni di compilazione.
--
Alessandro Staltari
staltari(a)
geocities.com

Massimiliano Mirra <ba...@prism.localnet> wrote in message
news:slrna7q4e...@prism.localnet...

No, ma se per caso stai compilando in C++ (g++) e usi una versione
sufficientemente recente del gcc, gli "implicit declaration" non sono
warning, ma errori (perchč cosě prevede lo standard del C++.)
Max

 warning, ma errori (perchè così prevede lo standard del C++.)
A me è capitato questo errore cercando di compilare un programma in C++.
Pur essendo richiamati correttamente i vari include, mi torna
perennemente questo errore:
g++ -g -Wall -I. -c utils.cc
utils.cc: In function `int string_scan(const string &, const char *,
...)':
utils.cc:244: implicit declaration of function `int vsscanf(...)'
make: *** [utils.o] Error 1
La funzione vsscanf è perfettamente definita in stdio.h (/usr/include)
ed inoltre esiste il file utils.h che lo richiama... ciò nonostante non
c'è verso di compilarlo! Che si fa in questi casi?! :-)))
Ciao. Giuseppe.
--
Registered user at 
http://counter.li.org
 # 253177
Togliere NOSPAM per rispondere in privato

 non c'è verso di compilarlo! Che si fa in questi casi?! :-)))
si #include <cstdio>
-- 
Se l'appetito vien mangiando,
Figuriamoci a digiuno...
BW2K+2

 si #include <cstdio>
Ho provato ma non cambia nulla. Inoltre ho notato che in cstdio c'è 
"semplicemente" un "include stdio.h"
Ciao. Giuseppe


 "semplicemente" un "include stdio.h"
ops, my mistake.
#include <cstdarg>
attualmente hai ragione, ma in futuro dovranno mettere le funzioni C 
nel namespace std::, e il compilatore dovrebbe dare un errore 
all'inclusione, se non ricordo male lo standard del c++


 all'inclusione, se non ricordo male lo standard del c++
Ho provato anche questa... ma niente! Ti ringrazio, ma mi sa tanto che 
mi tocca rinunciarci in quanto mi torna *perennemente* lo stesso errore!
Ciao. Giuseppe.


 errore! Ciao. Giuseppe.
guarda, da pagina man 
SYNOPSIS
       #include <stdarg.h>
       int vscanf( const char *format, va_list ap);
       int vsscanf( const char *str, const char *format, va_list ap);
       int vfscanf( FILE *stream, const char *format, va_list ap);
non so che altro dirti, a me va
che versione hai di gcc?


 che versione hai di gcc?
Ho provato con Mandrake 8.1 standard, quindi con gcc 2.96
