Mmm mi lascia perplesso...
ma e' vero ,no? cioe', hai provato? io ho appena provato xD....
Si, comunque sia, i prototipi è buona norma inserirli in un file.h mentre le definizioni in un'omonimo file.c cosi che, sia necessario includere solo file.h al prog.c, Questo è il metodo più usato per modulare il codice in c, quindi i prototipi sono comunque importanti.
oooook thx!!!
Se non specifichi un prototipo la prima volta che usi la funzione questa viene dichiarata implicitamente.Originariamente inviato da darkhero
una cosa...mi sono accorto che se inserisco la libreria dopo la main...anche se non metto i prototipi il programma mi funziona...a che servono quindi i prototipi se mi funziona lo stesso?
È una pessima idea affidarsi alle dichiarazioni implicite (e infatti sono deprecate in C e proibite in C++), dato che il compilatore si "inventa" una dichiarazione in base ai parametri che passi alla funzione (e suppone che questa restituisca int). È facile quindi che la dichiarazione "inventata" quindi sia sbagliata: ad esempio, la funzione è definita in maniera tale da accettare un double, ma alla prima chiamata le passi un int (che, se fosse stato riportato il prototipo, sarebbe stato convertito implicitamente), per cui per il resto del file la funzione ha una dichiarazione implicita sbagliata. A seconda del compilatore, questo genera errori in fase di compilazione (se poi viene dato il prototipo giusto), in fase di linking (se il compilatore include abbastanza informazioni nei moduli oggetto) o crash/comportamenti imprevisti in fase di esecuzione.
Per questo motivo è sempre bene usare i prototipi.
Amaro C++, il gusto pieno dell'undefined behavior.
sisi ho capito cosa mi vuoi dire...un'ultima cosa, riguardante il devc++ (se e' di tua competenza visto che probabilmente usi linux xD)...se io creo un progetto...ci metto dei file creati da me...per esempio, 2 .c e 1 .h ....e poi compilo il progetto..va perfettamente...ma che differenza fa se creo un progetto vuoto (che funziona) o se creo una libreria statica o se creo una libreria dinamica?
Faccio questa domanda perche' se mi rinomino io 3 file come .c .c e .h mi funziona tutto...se invece lo faccio tramite progetti come static library o dll mi crea problemi(non mi compila)..credo xk sono solo librerie ma anche se faccio un programmino che include quelle librerie non si compila....quindi non ho capito bene questa cosa del devc++
Non ho capito bene cosa combini col rinominare i file, comunque sono progetti di altro tipo, lasciali stare per ora.
Amaro C++, il gusto pieno dell'undefined behavior.
ok tutto ok , grazie![]()