Dr. Sommer schrieb:
> Was ist denn eine "Specification" bei C?
Irgend so ein Informatiker-Sprech.
Ansonsten gibt es mindestens vier Ansätze wie man Header gestaltet:
1) Ein Header bringt nur die notwendigen Definitionen und Deklarationen
für das zugehörige Modul/API mit. Abhängigkeiten werden nicht im Header
inkludiert, sondern müssen separat in .c inkludiert werden:
1 | #include <sys/types.h>
|
2 | #include <sys/stat.h>
|
3 | #include <fcntl.h> // fcntl needs types.h and stat.h
|
Vorteil: Man kuenert sich in seinem Header nur um das ebtsprechende
Modul
Nachteil: Der Anwender muss sich die Abhängigkeiten eventuell aus
Fehlermeldungen zusammensuchen.
2) Ein Header bringt die Deklarationen für das zugehörige C-File mit und
inkludiert selber alle benötigten Abhängigkeiten.
1 | #include <stdio.h> // as a side-effect provides a definition of NULL
|
Vorteil: Man erhält ein Komplettpaket für ein Modul.
Nachteil: Man erhält implizit Definitionen und Deklarationen die man
eigentlich nicht wollte.
3) Chaos. Ein Header bringt einen Teil der Abhängigkeiten mit, den
anderen Teil muss man selber inkludieren.
Vorteil: Keinen, außer dass es für den "scheissegal, läuft" Elite-Hacker
einfach aussieht
Nachteil: Alle
4) Ein Mix aus allem
S.o.
Mit 1) und 2) kann man sich jeweils anfreunden, wenn es konsequent
durchgezogen wird. Die anderen ergeben sich manchmal, wenn man schlecht
entworfene Modul-APIs benutzen muss.