Forum: Compiler & IDEs Globale Variablen ...??


von Ste (Gast)


Lesenswert?

Mein Compiler meint immer ich hätte die Variable nicht definiert, sobald 
ich diese in einer externen c-Datei behandle. Siehe das Beispiel. In der 
main.c habe ich temp als global definiert..oder? Das müsste doch gehen!

main.c :
1
uint8_t temp = 0;
2
3
void main (void){
4
5
....
6
7
}

util.c :
1
temp = 5;

von johnny.m (Gast)


Lesenswert?

Wenn die Variable in der util.c nicht bekannt ist, dann geht das nicht! 
Der Compiler bearbeitet die Quell-Dateien alle einzeln. Wenn Du die 
Variable in der util.c mit einer extern-Deklaration bekannt machst, dann 
sollte es funktionieren.

von Ste (Gast)


Lesenswert?

Also ich brauche die temp-Variable aber ebenso in der main.c

Sie muss in mehreren .c Dateien gültig sein. Sie wird überall mal 
gebraucht.

Mit extern hat sich auch komischerweise nichts getan.

von Ste (Gast)


Lesenswert?

definiere ich temp in der temp.c als global, so sagt er mir wieder: in 
der main.c nicht definiert

von flyingwolf (Gast)


Lesenswert?

in main.c steht

uint8_t temp = 0;

und in temp.c steht dann

extern uint8_t temp;

von Ste (Gast)


Lesenswert?

achsooo macht man das...
Danke!!! Jetzt gehts.

von Stefan K. (_sk_)


Lesenswert?

besser Du schreibst Deine extern  Definitionen in eine .h Datei:

in modul.c:
1
uint8_t global_var1 = 0;
in modul.h:
1
extern uint8_t global_var1;
In main.c musst Du dann nur die .h Dateien Deiner Module einbinden:
1
#include "modul.h"
2
3
void main(void){
4
  global_var1 = 1;
5
}
Genauso verfährst Du mit den Funktions-Deklarationen.

Viele Grüße, Stefan

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.