Steven schrieb:
> Oliver schrieb:
> Wo liegt denn jetzt der Unterschied, wenn ich direkt in
> dersr_functions_h das struct ablege? Wenn ich diese .h dann einbinde,
> habeich doch auch immer das struct, oder nicht? Oder habe ich dann
> immereine neue Kopie von dem struct in jeder Datei?
Falls Du Code in eine Header-Datei (.h) schreibst, wird dieser Code in
jedes Modul (.c) eingefügt, das den Header einbindet.
Wenn Du also
in einen Header schreibst, wird jedes Modul eine eigene Variable "a"
anlegen und mit 1 initialisieren.
D.h. Du hättest dann mehrere Variable namens "a". Wenn Du nun versuchst,
diese Variable extern (d.h. außerhalb eines Moduls) sichtbar zu machen,
wird der C-Compiler meckern, daß er nicht weiß, welche Variable Du
meinst, weil es ja mehrere mit dem gleichen Namen gibt.
Globale Variablen gehen so:
Es gibt einen "Besitzer", d.h. ein Modul, in dem die Variable angelegt
wird, d.h. Speicherplatz dafür belegt.
Außerdem gibt es "Benutzer", d.h. Module, die auf diese Variable
zugreifen können.
Normalerweise macht der Besitzer die Variable über seinen Header
bekannt, d.h. wenn Du eine globale Variable in "doof.c" anlegst, steht
in "doof.h" dann die externe Referenz ("extern int a;") drinn.