$$
\newcommand{\R}{\mathbb{R}}
\newcommand{\N}{\mathbb{N}}
\newcommand{\C}{\mathbb{C}}
\newcommand{\P}{\mathbb{P}}
\newcommand{\Q}{\mathbb{Q}}
$$
C-Header und Shit
- *.h und *.c -Dateien sind prinzipiell gleich, sie werden nur per Konvention unterschiedlich benannt
- Header (*.h-Dateien) enthalten Deklarationen, also nur die Signaturen der Funktionen in einem Programmteil/einer Bibiliothek/einer Datei
- Die Definitionen stehen in der *.c-Datei
- Beim Kompilieren werden alle *.c-Dateien parallel zueinander in Maschinencode übersetzt
- Erst beim Linken werden diese zusammengeführt.
- Die Header helfen dem Compiler sicherzustellen, dass die Funktionen aus anderen Programmteilen richtig eingebunden werden.
- Es werden idR nur Header included.
Wir haben ein Computerspiel, das eine main.c, eine physics.c und eine physics.h hat.
Die main.c enthält #include "physics.h"
. Die physics.h enthält die Signaturen aller Funktionen in der physics.c. Dadurch ist beim Compilen klar, dass in der main.c alles soweit funktioniert. Das Programm wird funktionieren, wenn in physics.c alles korrekt Implementiert wurde.
phyiscs.c wird parallel kompiliert und hat keine weiteren includes. Beim Linken werden die Funktionsaufrufe aus der main.c mit den Definitionen aus phyiscs.c verbunden.