Forum: Mikrocontroller und Digitale Elektronik globale Variable wie definieren?


von Leviathan (Gast)


Lesenswert?

Hi

Ich tüftle an einem Programm in C18 herum. Momentan hab ich 
Schwierigkeiten, eine Variable einzurichten, die in allen Funktionen 
gelten soll. Sie steht jetzt am Anfang von main.c vor den Funktionen. 
Das Problem ist, dass die Variabel bereits in den Funktionen benötigt 
wird, die per header-datei (am Anfang von main.c) eingebunden werden. 
Deshalb bringt der Compiler auch immer für die eingebundenen 
code-dateien Fehler, dass die Variabel noch nicht definiert sei.


lcd.c:162:Error [1105] symbol 'cursor' has not been defined

ich hab mich auch durch das microchip c18 tutorial gewühlt, bin aber 
nicht schlauer geworden. Weiß jemand Rat?

von ozo (Gast)


Lesenswert?

Eigentlich gehören keine Funktionen in Header Dateien.
Aber egal, du könntest am Anfang der Headerdatei ein "extern soundso 
cursor" setzen und damit die Variable deklarieren. Ist zwar ein bisschen 
von hinten durch die Brust ins Auge, sollte aber gehen.

von uwegw (Gast)


Lesenswert?

Du schreibst dir ne Header-Datei, in der die Variable als extern 
deklariert wird, und bindest diese Date überall ein wo die Variable 
gebraucht wird.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Mach dich mal (z.B. per Suche hier im Forum) schlau zum Thema 
Variablendefinition und Variablendeklaration.

> dass die Variabel bereits in den Funktionen benötigt
> wird, die per header-datei (am Anfang von main.c) eingebunden werden.
So werden keine Funktionen eingebunden...
Sieh mal nach, wie andere das machen.

von Leviathan (Gast)


Lesenswert?

ich meinte auch nicht die Funktionen an sich sondern nur der Name, hab 
mich wohl etwas unglücklich ausgedrückt. Die Funktionen selber liegen in 
den entsprechenden c files

ich versuch mal den Tipp von  uwegw, danke inzwischen

von Karl H. (kbuchegg)


Lesenswert?

Leviathan schrieb:
> ich meinte auch nicht die Funktionen an sich sondern nur der Name, hab
> mich wohl etwas unglücklich ausgedrückt. Die Funktionen selber liegen in
> den entsprechenden c files

Das kann dann aber nicht sein.
Du hast doch nicht die *.c Files mittels #include eingebunden?

http://www.mikrocontroller.net/articles/FAQ#Globale_Variablen_.C3.BCber_mehrere_Dateien

von Leviathan (Gast)


Lesenswert?

danke Karl Heinz, das Dokument hat wesentlich zum Verständnis 
beigetragen, nun läuft die Sache :)

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.