Bastian B. schrieb:
> hm. das klingt schwierig.
Ist es aber nicht.
Du musst dich nur ein wenig mit den Grundlagen auseinandersetzen.
Die erste und wichtigste Grundlage lautet:
# wenn der Compiler ein *.c File übersetzt, dann übersetzt er auch
nur dieses eine File.
Was in anderen *.c Files steht, ist zu diesem Zeitpunkt völlig
uninteressant und kümmert den Compiler nicht die Bohne.
# daraus folgt:
jedes *.c File muss für sich alleine gesehen in sich vollständig
sein.
# Jedes *.c File wird von oben nach unten compiliert.
Daraus folgt: Bevor etwas verwendet werden kann, muss es dem
Compiler bekannt gemacht werden.
Es gibt dafür 2 Möglichkeiten
+ Definition
Eine Definition veranlasst, dass auch im Speicher dafür
Platz reserviert wird. Eine Variablendefinition ist daher
dasjenige, welches dafür sorgt, dass eine Variable auch
tatsächlich erzeugt wird.
+ Deklaration
Eine Deklaration teilt dem Compiler zur geschätzten Kentnisnahme
mit, dass etwas woanders existiert und wie es aussieht.
Eine Deklaration sorgt nicht dafür, dass dafür Speicherplatz
reserviert wird. Das muss durch eine Definition geschehen
# Aus dem letzten folgt wiederrum
Alles, auch Variablen, darf nur einmal definiert werden. Man
kann sich aber mit beliebig vielen Deklarationen darauf beziehen.
# Eine (gloable) Variable wird definiert, indem man sie ausserhalb
einer Funktion als Variablendefinition, zb
hinschreibt.
# Eine Variablendeklaration wird gebildet, indem man einer gedachten
Definition das Schlüsselwort 'extern' voranstellt.
Um sich also aus einem anderen *.c File auf die soeben definierte
Variable mittels einer Deklaration zu beziehen, schreibt man
Lies dir in der >>> FAQ <<< die entsprechenden Abschnitte durch:
Punkt 8: Globale Variablen über mehrere Dateien
Punkt 9: Was hat es mit volatile auf sich
Punkt 6: Header File, wie geht das?