boh, vedi se può aiutarti, cerco di essere piu possibile terra terra pertanto banalizzo alcune questioni e sorvolo su tanti aspetti:
Un programma in C o C++ banale si può scrivere in un unico file con estensione .c o .cpp
Un progetto un po meno banale richiede per forza di cose di utilizzare librerie esterne oppure di mettere insieme diversi moduli C/C++
Il compilatore prende ognuno di questi moduli C/C++ e li compila in file con estensione .obj
Il linker prende tutti i moduli .obj e li compila in un unico file .exe
Facciamo un po un esempio banale. Scrivi una libreria aritmetica con la funzione
codice:
/*file somma.c*/
int somma (int a, int b)
{
return a+b;
}
ora vuoi usare questa funzione nel tuo programma, che metterai nel file programma.c
codice:
/*programma.c*/
int main (int argc, char ** argv)
{
return somma(1, 1);
}
Dai i due files in pasto al compilatore.
Il compilatore compila somma.c senza problemi.
quando il compilatore compila programma.c si arrabbia perchè la funzione somma non è definita.
per fare si che la funzione somma sia definita in programma.c, bisogna che programma.c sia a conoscenza del prototipo della funzione, per cui dovrei modificare programma.c come segue
codice:
/*programma.c*/
int somma(int a, int b);
int main (int argc, char ** argv)
{
return somma(1, 1);
}
se ora compilo il compilatore è felicissimo e compila perfettamente, il linker poi risolverà la chiamata di somma facendola puntare al codice scritto nel file somma.obj che verrà in qualche modo unito insieme al codice di programma.obj in programma.exe
VENIAMO AI MITICI FILE HEADER. Ad ogni modifica del modulo somma.c dovresti anche ricordarti di modificare il file "programma.c" e non solo, ti dovresti anche ricordare di modificare tutti gli altri file con estensione .c che utilizzano la funzione somma, come ad esempio programma_nuovo.c, programma_nuovissimo.c e programma_ultimo_definitivo.c, siccome il tempo è danaro non vorresti dovere fare a mano questo lavoraccio infame.
Per semplificare questa gestione insieme al file somma.c crei anche il file somma.h che contiene tutti i prototipi di funzione (ed altro) che sono resi disponibili in somma.c e lo includi nei file .c in cui ne avrai bisogno.
per cui per finire il tuo programma sarà composto da 3 files:
codice:
/*somma.h*/
int somma(int a, int b);
codice:
/*somma.c*/
#include "somma.h"
int somma(int a, int b)
{
return a+b;
}
codice:
/*programma.c*/
#include "somma.h"
int main(int argc, char**argv)
{
return somma(1,1);
}
Come vedi il discorso degli Headers non c'entra nulla con il campo fiorito, è solo un discorso di organizzazione dei files sorgenti, capito?
Ciao.