Variablendeklaration und -definition
-
Ich möchte gerne mal wissen wie man es richtig macht:
Wenn ich eine globale Variable verwenden möchte (ich versuche das zu vermeiden, kommt aber gelegentlich vor) schreibe ich am Anfang außerhalb jeder Funktion in einer .c-Datei beispielsweise
int i;
Dadurch kann ich in jeder Funktion innerhalb dieser Quelldatei diese Variable nutzen. Soweit habe ich das verstanden.
Nun zu meinen Problemen:
Möchte ich diese Variable in anderen Quelldateien nutzen muß ich diese Codezeile nicht mehr in der .c-Datei unterbringen, sondern in der zugehörigen .h-Datei. Soweit so gut kniffelig wird es nun: Wenn ich die Variable beispielsweise mit 0 vordefinieren will, also zum Bsp. so:
int i = 0;
dann geht das in der .h Datei nicht, da es sich dabei um eine Zuweisung handelt.
Stimmt es wenn ich es so mache:in der .c-Datei
int i = 0;
und in der .h-Datei
extern int i;
?
Oder wie funktioniert das richtig?
-
"Möchte ich diese Variable in anderen Quelldateien nutzen muß ich diese Codezeile nicht mehr in der .c-Datei unterbringen, sondern in der zugehörigen .h-Datei."
Falsch.
Wenn du zwei *.c Files hast, "int i;" in eine Header schreibst und die Header bei beiden *.c Files includierst, hast du in jeder *.c Datei ne Variable mit Namen i. Wenn du in main.c i = 10; machst, dann wird i in der zweiten *.c Datei nicht geändert.Mache es so:
*.c File:
int i = 5
*.h File:
extern int i;
dann kannst du in jeder *.c Datei, die die Header includiert auch i benutzen.