Forum: Mikrocontroller und Digitale Elektronik Variable deklarieren die aus anderen Sources erreichbar ist


von Martink11 M. (Firma: google) (martink11) Flattr this


Angehängte Dateien:

Lesenswert?

Hallo,

ich programmiere in C einen Atmega128.
wie der betreff schon sagt, brauche ich eine Variable die über "main.c" 
hinausgeht damit ich sie in einer weiteren C-Datei ausgeben kann.

Das Problem ist folgendes:
ich habe den Webserver vom Ulrich Radig, ich habe aber in der cmd.c / 
cmd.h einen Befehl hinzugefügt, der mir einige Variablen per RS232 
ausgeben soll.

nur werden diese Variablen in der main.c errechnet und ich habe aus der 
cmd.c keinen Zugriff auf diese Variablen.

der Befehl in der cmd.c nennt sich folgendermaßen:
//---------------------------------------------------------------------- 
--------
// Status von Heizung ausgeben
void command_status (void)
{
  usart_write ("\n\rstatus %d;%d;%d\r\n",temp_boiler,temp_ofen,pumpe);
}
//---------------------------------------------------------------------- 
--------

ich habe auch schon an Zeiger gedacht, aber irgendwie ist das auch nicht 
das richtige und eine "globale" Variable geht auch nicht (sollte sie das 
nicht?)
ich habe alle meine Variablen ausserhalb der main() deklariert.

Die Fehlermeldung vom WINAVR sieht dann folgendermaßen aus:
cmd.c: In function 'command_status':
cmd.c:339: error: 'temp_boiler' undeclared (first use in this function)
cmd.c:339: error: (Each undeclared identifier is reported only once
cmd.c:339: error: for each function it appears in.)
cmd.c:339: error: 'temp_ofen' undeclared (first use in this function)
cmd.c:339: error: 'pumpe' undeclared (first use in this function)

wäre sehr dankbar für eine antwort von euch!!!

von Karl H. (kbuchegg)


Lesenswert?

Martin 567 schrieb:

> das richtige und eine "globale" Variable geht auch nicht

Warum nicht?

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

von Martink11 M. (Firma: google) (martink11) Flattr this


Lesenswert?

ok
danke Karl-Heinz

jetzt gehts ich hatte die deklaration in der cmd.c vergessen.
bei mir wars nur in der main.c  :P

ich habs mir gleich gedacht, global muss doch hinhaun.

naja jetzt gehts ja...
danke nochmal
ging wirlklich schnell

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.