www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit Variablen bei C


Autor: XC866 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen.

Ich habe noch ein kleines Problem beim C Programmieren. Ich programmiere 
denn XC866 (8051-Familie). Das Programm ist uVision3.
Die Initialisierung habe ich mit DaVE gemacht. Ich habe diese Sachen 
initialisiert: ADC,UART,IO,T2.
Bei Project Workspace wird das jetzt so dargestellt:

Main.C
ADC.C
UART.C
T2.C
IO.C

Jetzt zu meinem Problem.
Wie muss ich das machen das ich eine Variable über alle Programmteile 
gebrauchen kann? z.B. Beim T2 habe ich einen Zähler(int Zaehler), mit 
diesem möchte ich im Main.C weiterarbeiten.
Dann kommt aber der Fehler "undefined identifiere".
Der ganze Rest funktioniert eigentlich ganz gut.

Gruss und Danke
Matthias

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am besten machst Du zur Datei T2.c noch eine Header Datei a la T2.h, in 
der Du die betreffenden funktionen per extern forwärtsdeklarierst:

T2.h:

#ifndef T2_H
  #define T2_H
  extern int Zaehler
#endif

Diese Headerdatei kannst Du dann ins Main.c includen und dann ist der 
Zähler auch im Main verfügbar.

Also:

Main.c:

#include "T2.h"

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, bei "extern int Zaehler" fehlt noch ein ;

Autor: XC866 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Danke für die Antwort. Hat schon funktioniert. Muss ich im C File com T2 
den Eintrag int zaehler; so lassen. Wenn ich ihn lösche kommen 
Warnungen. Es funktioniert aber wenn ich den Eintrag dort stehen lasse.

Gruss und Danke

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte, bitte.

Ja, Du musst den Eintrag dort stehen lassen.
Aber am besten includest Du die Datei T2.h auch noch in T2.c.

T2.c:

#include "T2.h"

Der Grund ist, dass der Compiler dann die richtigen Fehlermeldungen 
ausgibt, falls die Vorwärtsdeklaration vom Headerfile T2.h nicht mit der 
tatsächlichen Definition in T2.c übereinstimmt.

Wie gesagt ist das im Headerfile nur eine Vorwärtsdeklaration, darum 
brauchts noch die eigentliche Deklaration der Variablen im T2.c File, 
also "int Zaehler;".

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.