0 Daumen
271 Aufrufe

Damit eine Variable auch verwendet werden kann, muss Speicherplatz dafür reserviert werden. Fūr das konkrete Speicherobjekt der Variablen im Programm bzw. im ausführbaren Code wird die Definition vereinbart.

Eine Deklaration darf mehrmals im Code vorkommen, eine Definition hingegen nur einmal im Programm. Wenn Sie beispielsweise eine Ganzzahlvariable ivar wie folgt vereinbaren:

int ivar;

deklarieren Sie eine Variable vom Datentyp int mit dem Bezeichner ivar und definieren sie auch gleichzeitig, Somit ist es in diesem Beispiel nicht falsch zu sagen, dass eine Definition gleichzeitig auch eine Deklaration ist.

Mehrere Bezeichner desselben Datentyps lassen sich auch in einer Zeile, getrennt durch Kommata, vereinbaren:

int ivar1, ivar2, ivar3;

Wenn Sie eine Variable nur deklarieren wollen, mûssen Sie das Schlüsselwort extern davorsetzen:

// datei-01.c
extern int Ivar;  // Deklaration

Mit diesem Schlüsselwort bestimmen Sie, dass kein Speicherplatz für ivar reserviert wird und dass Sie die Definition dieser Variablen (gewóhnlich) in einem anderen Modul vornehmen. Die Definition und Speicherplatzreservierung erfolgen jetzt beispielsweise in einem anderen Quelltextmodul:

// datei-02.c
Int ivar;

Habe nicht ganz verstanden: Wozu diese (extern)? Bedeutet: Ich sage dem Computer, diese gehört NICHT zum reservierten Schlüsselwörter von C? Damit ich diesen (Variablen Name → ivar ) nutzen kann?

Avatar von

1 Antwort

0 Daumen
Ich habe nicht ganz verstanden, wozu dieses "extern" gut ist. Bedeutet es: Ich sage dem Computer: Dies gehört NICHT zu den reservierten Schlüsselwörtern von C, damit ich diesen Variablennamen nutzen kann?

Gute Frage. Das Schlüsselwort "extern" als Vorsatz einer Variablendeklaration sagt dem Compiler (nicht dem Computer), dass die Variable an dieser Stelle nur deklariert (bekannt gemacht) wird. Die Definition und die Speicherplatzreservierung muss dann an anderer Stelle des Quelltextes vorgenommen werden.

Avatar von

Was ist der Unterischied wenn ich OHNE (extern)? ist das auch richtig?

Ohne das "extern" ist die Variablendeklaration auch eine Definition und der Compiler weiss, dass er nun den notwendigen Speicherplatz reservieren muss.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community