Forum: Mikrocontroller und Digitale Elektronik c Variablen übergabe


von Mathias (Gast)


Lesenswert?

ich habe ein C Problem:
in dem file "main.c" definiere ich die Variabe "int counter;" und
"float test2;"
um die Variablen auch in anderen Files zu nutzen habe ich main.h mit
"extern int counter;"  und "extern float test2;" definiert.

im File in dem ich die Variablen nutzt, bzw ausgeben will habe ich nun
main.h mit eingebunden.

Jetzt ist nun mein Problem und ich sehe einfach meinen Fehler nicht:
counter ist bekannt test1 aber nicht.

Was mach ich falsch?

von Thomas (Gast)


Lesenswert?

test1 wirst du nicht finden, wenn du test2 definiert hast.

Gruß Thomas

von Sven (Gast)


Lesenswert?

ja klar, du hast auch test2 definiert !!

Achtung: schreibweise ;-)

von mathias (Gast)


Lesenswert?

ich suche natürlich test2 und finde es nicht.

habe daneben getippt und ist mir bei der Kontrolle wohl nicht
aufgefallen. Fehler passieren.

Sorry, hoffe das euch das nicht abschreckt.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Noch einmal und es schreckt uns ab!

Verzichte bitte nach dem Schreiben eines Beitrages auf das Betätigen
des "Zurück"-Knopfes Deines Browsers.

von mathias (Gast)


Lesenswert?

werde ich in zukunft machen

von Peter D. (peda)


Lesenswert?

Genau deshalb wird ja immer empfohlen, ganz genau den Code, den man
getestet hat, als Anhang zu senden und nichts anderes !!!

Bzw. wenn man den Code verkürzt hat, den dann natürlich nochmals zu
testen, ob der Fehler wirklich noch drin ist.


Peter

von Peter D. (peda)


Lesenswert?

P.S.:
Du hast bestimmt den Zurück-Knopf betätigt.


Peter

von mathias (Gast)


Lesenswert?

das Probelm an der Sache ist: ich nutzt FreeRTos und da den LPC Rowley
Webserver Port. Hier kann ich nicht den gesammten Code posten, es wäre
einfach zu umfangreich. Deshalb habe ich mein Problem kurz beschreiben
in der Hoffnung das er verständlich ist.

Also ist meine überlegung nicht Grundsätzlich falsch das ich so alle
Variablen auch in anderen Files bekannt machen kann?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die Vorgehensweise ist vollkommen korrekt.

In einer .C-Datei die Variable definieren, in einer .H-Datei die
Variable "extern" deklarieren, die Headerdatei in alle Dateien
einbinden, in denen auf die Variable zugegriffen werden soll.

Genau so macht man das.

von Ulrich (Gast)


Lesenswert?

ich könnte wetten das du test2 nirgends in der main.cverwendet hast...

von Ulrich (Gast)


Lesenswert?

ups ich glaub das war schwachsinn sorry....

von mathias (Gast)


Lesenswert?

ich glaube ich seh grade den Wald voller Bäumen nicht.
ich werde es morgen weiter versuchen jetzt finde ich den Fehler einfach
nicht.
Danke für alle Tips vll wennes nicht geht werde ich mich morgen noch
mal melden. Das soll keine Drohung sein ;-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ein Hinweis noch: Die Variablendefinition in der .C-Datei muss
außerhalb jeder Funktion erfolgen.

Variablen innerhalb einer Funktion sind "automatische" Variablen, die
werden auf dem Stack angelegt und sind nur während der Laufzeit der
Funktion gültig; der Linker "sieht" diese Variablen nicht.

von mathias (Gast)


Lesenswert?

die Definition erfolgt ausserhalb der Funktionen das kann also nicht der
Fehler sein.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wie lautet denn exakt die Fehlermeldung?

von Mathias (Gast)


Lesenswert?

`test2' undeclared (first use in this function)

Also scheint das mit main.h noch nicht hin zu hauen.

jedoch wird auf die selbe Art und Weise auch schon die Variable counter
übergeben. und bei der wird kein Fehler ausgegeben.

ich werde einfach für test2 eine eigene *.h datei definieren und mal
sehen wie der compiler reagiert.

von Mathias (Gast)


Lesenswert?

wenn ich das mache wird es ohne Fehler compiliert aber der zugewiesene
Wert wird nicht übergeben.

na ja ich geh jetzt erstmal ins Bett und überschlaff das Problem

euch allen auch eine gute Nacht

von mathias (Gast)


Lesenswert?

ok ich weiß nicht warum, seit gestern abend als es nciht ging habe ich
nichts geändert aber nun gehts.
ggf hat der Compller heute die o-files neu erstellt was anderes kann ch
mir nciht vorstellen. Jedoch habe ich gestern mehrmal alle o-files
gelöscht
Danke an alle Für eure Hilfe

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.