www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik c Variablen übergabe


Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
test1 wirst du nicht finden, wenn du test2 definiert hast.

Gruß Thomas

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja klar, du hast auch test2 definiert !!

Achtung: schreibweise ;-)

Autor: mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
werde ich in zukunft machen

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

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


Peter

Autor: mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich könnte wetten das du test2 nirgends in der main.cverwendet hast...

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ups ich glaub das war schwachsinn sorry....

Autor: mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: mathias (Gast)
Datum:

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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie lautet denn exakt die Fehlermeldung?

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.