I file .h sono header, che contengono i prototipi delle funzioni che si trovano in altri file .c da compilare o già compilate nelle librerie statiche. Queste ultime hanno solitamente estensione .lib o .a, e contengono codice già compilato che viene unito con i vari moduli oggetto generati dal compilatore al momento del linking.Originariamente inviato da jaso
scusate, io pensavo che i file .h fossero file di libreria
che cosa sono allora i file di libreria?
In pratica: nel file .h ci sono le dichiarazioni che spiegano al compilatore come sono fatte le funzioni che intendi usare. Se il compilatore non trova subito la definizione di queste funzioni nel tuo file .c, inserisce nel modulo oggetto che va a generare un appunto del tipo "qui manca una funzione; linker, pensaci tu". Il linker si prende in pasto tutti i moduli oggetto (derivanti dalla compilazione di tutti i file .c) e le librerie (che sono più o meno analoghe ai moduli oggetto, ma che sono già pronte compilate), e li mette insieme, rimpiazzando tutti questi "appunti" del compilatore con chiamate al codice effettivo di queste funzioni che trova negli altri moduli oggetto o nelle librerie. Alla fine di tutto il processo viene generato l'eseguibile.
Originariamente inviato da oregon
Frequentate tutti alla stessa universita' ?![]()
Be', ma io non capisco cosa avessero nel cervello quando hanno fatto il C99: tanto gli costava dichiarare deprecate tutte queste funzioni di time.h (funzioni di libreria standard non rientranti che restituiscono puntatori a buffer interni... pazzi criminali!Concordo ... ma non penso si cambieranno ...VVoVe: ) nonché le funzioni non sicure (gets in primis, e tutte le altre a seguire) e introdurre delle varianti sicure (tipo le versioni _s di Visual C++), invece di inventarsi un boolean non compatibile con il C++? Mah...