Originariamente inviato da Lak3d
quindi l'intestazione (il prototipo per capirci) nel file header, mentre le loro definizioni+prototipi non nello stesso ma in uno .c?
Nel file .c solo le definizioni, non i prototipi. Ti faccio un esempio:
codice:
//file a.h
void test();

//file a.c
#include "a.h"
void test()
{
    //Fa qualcosa
}

//file b.h
void test2()

//file b.c
#include "b.h"
#include "a.h"
void test2()
{
    //Fa qualcosa
    //Richiama test()
    test();
}
ps: mi dovreste illuminare su una cosa: il prototipo alla fine della fiera altro non fa che convalidare la chiamata, ovvero verificare che questa rispetti il numero dei parametri e i loro tipi... ma già non bastava come succede in VB verificare se chiamata e intestazione coincidono?
La separazione prototipo/definizione consente di compilare molto più rapidamente un programma: infatti se il modulo oggetto di un file .c è già stato creato il compilatore non ha bisogno di ricompilarlo e si può limitare a validare le chiamate a funzioni definite in quel modulo in base ai prototipi; ci penserà poi il linker a collegare il tutto.