Hallo,
bei ein C Programm erzeugst du mehrere Object-Files die dann gelinkt werden. Jetzt hat aber jedes .o File seine eigene Version von deinen Funktionen... und der Linker macht dann auch mehrere unterschiedliche draus (behaubte ich jetzt mal so ohne genaures wissen
.
Wenn allerdings in den Header Files nur die Deklarationen enthalten ist, dann ist der Compiler erstmal überall glücklich weil er einen Prototypen zur hand hat und der Linker erkennt dann das die ganzen .o Files eine externe Referenz auf die Funktionen haben und kann die dann gegen den einzig existierenden Funktionsrumpf aus dem .c-File linken.