Newsgroup: it.comp.lang.c
Titolo: FAQ 6 -versione definitiva - compilare + sorgenti

3f - Compilare un progetto costituito da più sorgenti
Quando il codice sorgente comincia a diventare lungo, perde in leggibilità,
è difficile da mantenere , la compilazione richiede parecchio tempo e
qualche volta potrebbe anche fallire a causa di memoria insufficiente. E'
giunto il momento di suddividere il progetto in più sorgenti e avvalersi dei
benefici della compilazione separata. Ma come? Tutto sta in 3 fasi:
1)       Suddivisione del codice in più file (sorgenti e headers)
2)      Compilazione di ogni singolo file sorgente
3)      Fase di linking dei moduli oggetto
1)       - Il codice sorgente va suddiviso in files contenenti ognuno un
gruppo omogeneo di definizioni di funzioni (per omogeneo si intende che è
meglio raggruppare le funzioni che svolgono compiti simili in un unico
file - esempio un set di funzioni per eseguire operazioni tra matrici). Uno
di questi conterrà la funzione main().
All'inizio di ogni file devono essere inclusi i file header corrispondenti
alle dichiarazioni delle funzioni utilizzate all'interno del file.
- Un file header serve a garantire la coerenza delle dichiarazioni in tutti
i moduli dell'applicazione. Quindi ci si mettono, appunto, dichiarazioni di
funzioni e strutture dati ma mai definizioni, cioè niente che allochi,
implicitamente o esplicitamente, memoria.
2)      Con l'aggiunta dei necessari file header, ogni file può essere
compilato indipendentemente dagli altri. A differenza di quanto accade
durante la "compilazione" di un progetto a sorgente unico, qui non viene
invocato il linker e quindi il "prodotto dell'operazione è un file "oggetto"
che ha normalmente estensioni .o o .obj .
Se a causa di debug o aggiornamento, è necessario modificare la definizione
di una funzione, non è necessario ricompilare tutti i sorgenti, ma solo
quello oggetto di modifiche e poi invocare nuovamente il linker.
3)      Ultima fase, quella di linking. Viene spesso automatizzata
attraverso strumenti quali make e varianti specifiche di alcuni compilatori.
Nel caso di make, esso legge le informazioni che sono contenute nel
makefile, il quale contiene le "regole" con le quali compilare e linkare i
vari moduli. Make controlla le date dei file di sorgente e oggetto e se sono
diverse provvede a ricompilare quello specifico file e a collegare tra loro
i vari moduli.
--
Marco Coppo
University Of Sheffield

 3f - Compilare un progetto costituito da più sorgenti
Bene. Mi pare un ottimo lavoro. Solo non capisco il senso della
numerazione: perché 3a, 3b. etc.?
EMG

 numerazione: perché 3a, 3b. etc.?
Caro EMG, stavolta mi deludi...;-)) pensavo fossi andato a vederle su
internet almeno una volta!
La numerazione č cosě perchč le domande che iniziano con 1 sono quelle della
sezione introduzione. quelle con 2 della sezione per iniziare, le 3 della
sezione come si fa a.... e le 4 altre domande!
Ciao


 sezione come si fa a.... e le 4 altre domande!
Capito.
EMG

sezione come si fa a.... e le 4 altre domande!
Ma visto che la numerazione della FAQ puo' superare "z"
non ti conviene 1.1, 1.2 ... 2.1 ... 
Marco
-- 
............................................
 
m.at...@flashnet.it
La prima delle Frequently Asked Questions: 
dove sono le FAQ ?      it.faq