Hallo,
ich hab eine Frage zur Verwendung von #include bzw. Header-Dateien.
Etwas googlen und suchen in den Forumsbeiträgen brachte mich zur
folgenden (etwas vereinfachten) allgemeinen Form:
1 | /* header.h */
|
2 | void function_1(void); // Prototyp von function_1
|
3 | void function_2(void); // Prototyp von function_2
|
4 | // usw.
|
5 |
|
6 |
|
7 | /* header.c */
|
8 | #include "header.h"
|
9 |
|
10 | void function_1(void)
|
11 | {
|
12 | // mach irgendwas..
|
13 | }
|
14 |
|
15 | void function_2(void)
|
16 | {
|
17 | // mach irgendwas anderes..
|
18 | }
|
19 |
|
20 |
|
21 | /* main.c */
|
22 | #include <...> // Standard-Bibliotheken einbinden
|
23 | #include "header.h" // <-- hier setzt meine Frage an (siehe unten)
|
24 |
|
25 | void main(void)
|
26 | {
|
27 | // Hauptprogramm..
|
28 | }
|
Meine Frage ist nun, warum wird im Hauptprogramm die *.h-Datei
eingebunden und nicht die *.c-Datei?
Ok, aus der *.h kennt der Compiler erstmal die Prototypen. Ok, soweit so
gut. Aber woher kennt er dann die genaue Implementierung der Funktionen
(heisste das so?)? Wird einfach davon ausgegangen, dann *.h und *.c den
selben Namen haben?
Logischer für mich würde es irgendwie klingen, wenn ich im Hauptprogramm
die *.C einbinde. Die Datei wiederum bindet dann die *.h ein und die
Welt ist in Ordnung :-)
Sehe ich das richtig, dass ich auch einfach einige Funktionen in eine
*.c auslagern kann und dann mit include "xyz.c" einbinden kann, ohne
Header zu benutzen? (für nicht garzu allgemein nutzbare Funktionen vor
allem).
Gruß und schonmal Danke für Erleuchtung :-)
Christian