@Sternthaler: Oops, ich dachte, das wären private Code-Conventions. Da wär sowas ja vertretbar.
Zudem musst du wissen, WELCHE Datei den Header includet. Aber wenn man in einem (großen) Projekt arbeitet, weiß man das nicht unbedingt. Nehmen war an, die Standard-Libs/Header wären so gestrickt, und du willst ein Modul source.c schreiben, das std-Funktionen/Objekte verwendet.
Weil du in source.c Lib-Functions verwendest, musst du in source.h die libfuncs.h includen, damit jemand, der dein Modul benutzt (für ihn ist dein Modul ne Black-Box) keine unaufgelösten Referenzen bekommt. libfuncs.h kann aber nicht wissen, wo es später stehen wird! Und die Compilezeit von libfuncs.c kann eine ganz andere sein, als die von source.c oder source.h! (Bibliotheken!). Du müsstest dann zur Linkzeit wissen, wie die Quelle aussieht!!!
Nix für ungut, immerhin willst du deine Brötchen mit dem Code verdienen
::Edit::
Zu dem "extern". Ich hab's rausgenommen. Ein Fehler ist's allerdings nicht. Man sieht dann aber in der Quelle direkt, ob das Ding static oder extern ist. Ebenso könnte ein "static" dort stehen.
Lesezeichen