PDA

View Full Version : [C++] Ma il linkage come funziona?


gyborg
25-06-2004, 11:31
Salve ragazzi, premetto che sono un niubbo, quindi capitemi!!! :D

Sto terminando ora il mio primo programmino che vada oltre il semplice programma di prova delle parole chiave appena imparate. Non è ad oggetti, l'idea per farmi le ossa era quella di risolvere prima un problema col "vecchio" metodo procedurale, poi iniziare con gli oggetti, che comunque ho già studiato, ma riguardo all'ultilizzarli non ho ancora pratica.

Dunque, il programma l'ho strutturato in una quantità di funzioni, e siccome sono circa 150 linee volevo splittarlo in + file separati e linkarli. Volevo sapere: mi conviene fare una o più librerie contenenti tutte le funzioni, e includere l'header all'inizio del file principale? Quali alternative ci sono per splittare un programma in più file sorgenti?

Poi una domanda che mi rosica è: il linkage è compilatore-dipendente? Cioè io uso Dev-C++ e posso costruire un progetto, che contiene + file da linkare assieme, ma il risultato è un *.dev, che ha tutta l'aria di essere un formato proprietario.... ma se io volessi dare il sorgente ad un'altra persona che usa un altro ambiente d sviluppo/compilatore, come fa questo a ricomporre tutto correttamente??? :sofico: Insomma non so se si è capito il mio dubbio, se no vedo di trovare altre parole.....

Grazie raga!

Luc@s
25-06-2004, 12:09
il formato .dev indica solamente le opt del progetto e altri amenita varie.
Quello che linki sono i .obj che qualsiarsi compilatore a sto mondo produce.
Per i problemi di portabilita.........ci sono gli autotools e i makefile :)

Se sbaglio ditemelo.

gyborg
25-06-2004, 13:06
Non ho capito bene... mi puoi spiegare in termini + elementari? Che sono gli obj? Non ne ho visti da me...

Poi, volevo anche sapere se includere i file con le funzioni in un header è l'unico metodo x splittare o se c'è anche qualcos'altro.... di + efficiente o conveniente.

Luc@s
25-06-2004, 13:09
Originariamente inviato da gyborg
Non ho capito bene... mi puoi spiegare in termini + elementari? Che sono gli obj? Non ne ho visti da me...

Poi, volevo anche sapere se includere i file con le funzioni in un header è l'unico metodo x splittare o se c'è anche qualcos'altro.... di + efficiente o conveniente.


gli obj sono i file che verranno linkati.

gyborg
25-06-2004, 14:51
OK il compilatore genera gli obj, e dove li mette? Per fare in modo che i file che includo in quello pricipale vengano trovati li devo mettere dove ci sono tutti gli header tipo iostream & c. Allora se cambio compilatore devo mettere questi file nella nuova directory degli include se voglio che me lo compili, giusto?

Rimane sempre la 2a domanda... faccio bene a splittarlo così o ci sono anche altre vie?