www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Variablen Deklaration/Definition


Autor: unsigned char (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich habe ein Problem und zwar gibt mein Compiler C18 mir einen 
Syntaxerror aus bei folgender Zeile:

Dies ist meine Variablen Definition in main.c
unsigned char i;

In main.c ist auch noch eine For Schleife, welche auf "i" zugreift.
Außerdem habe ich die Variable zusätzlich noch in main.h deklariert 
mit:
extern unsigned char i;

Da ich die Variable "i" auch noch in anderen .c Dateien benötige, in 
denen dann über:
#include  "main.h"  

Auf diese zugegriffen werden kann. Nun weiß einer warum der Compiler 
einen Snytax Fehler angibt in der Zeile (s. erstes Codefenster) ?

Gruß

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unsigned char schrieb:

> Auf diese zugegriffen werden kann. Nun weiß einer warum der Compiler
> einen Snytax Fehler angibt in der Zeile (s. erstes Codefenster) ?


Das was du da beschreibst, klingt soweit alles richtig.

Für einen Helfer wichtig wäre daher:
Der genau Text der Fehlermeldung
Ein größerer Ausschnitt aus dem Code. Viele Fehler ergeben sich erst aus 
dem genauen Zusammenhang. Daher ist es oft sinnlos nur 1 Zeile zu 
zeigen, nämlich die die der Compiler nennt. Wenn es sich nicht einfach 
nur um einen simplen Tippfehler handelt, ist diese 1 Zeile meistens 
wertlos. Simple Tippfehler siehst du selber aber auch.

Und bitte: Code nicht hier reintippen, sondern entweder per Cut&Paste 
einfügen oder einfach überhaupt die ganze Datei als Attachment anhängen.
Das ist für dich einfacher und hat den Vorteil, dass wir 100% exakt 
genau den gleichen Code sehen, den auch der Compiler zu Gesicht bekommt. 
Oftmals wird nämlich beim Abtippen der fehlerhafte Code vom Tipper 
automatisch korrigiert, ohne es selbst zu merken. Und dann suchen wir 
uns hier einen Wolf nach Fehlern, die du so im richtigen Code gar nicht 
gemacht hast.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und nochwas. Allerdings mehr programmiertechnischer Natur.

Eine gloable Variable i zu nennen ist eine extrem schlechte Idee.
Variablen die man nur zb für for-Schleifen benötigt, macht man nicht 
global. Da ist Ärger vorprogrammiert.
Und andere Variablen, die tatsächlich global sein müssen, nennt man 
nicht i. Einbuchstabige Variablennamen reserviert man ausschlieeslich 
für kleine Umgebungen wie eben zb for-Schleifen in Funktionen.

Autor: unsigned char (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Okay das mit dem i nicht für global zu nutzen leuchtet mir ein, danke 
für den Tipp. Ich habe mal in den Anhang die Dateien geladen.

Gruß

Autor: Micha H. (mlh) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Einbuchstabige Variablennamen reserviert man ausschlieeslich
> für kleine Umgebungen wie eben zb for-Schleifen in Funktionen.

...und definiert sie nicht als char.

Autor: unsigned char (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Edit: Sorry, dass das dort alles so verschoben ist aber in MPLAB ist das 
nicht so =/

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und die Fehlermeldung lautet jetzt wie?

Autor: unsigned char (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na klar:
----------------------------------------------------------------------
Release build of project `H:\Programierung\Programmecode\C\Multimedia Modul\Multimedia Modul.mcp' started.
Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.31, mcc18.exe v3.31
Sat Nov 27 15:21:21 2010
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Program Files\Microchip\MCC18\bin\mcc18.exe" -p=18F4550 /i"C:\MCC18\h" "main.c" -fo="main.o" -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
H:\Programierung\Programmecode\C\Multimedia Modul\main.c:61:Error: syntax error
Halting build on first failure as requested.
----------------------------------------------------------------------
Release build of project `H:\Programierung\Programmecode\C\Multimedia Modul\Multimedia Modul.mcp' failed.
Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.31, mcc18.exe v3.31
Sat Nov 27 15:21:21 2010
----------------------------------------------------------------------
BUILD FAILED


Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unsigned char schrieb:

> H:\Programierung\Programmecode\C\Multimedia Modul\main.c:61:Error:
> syntax error
> Halting build on first failure as requested.

Man mag mich engstrinig nennen. Aber wenn ich die Codezeilen zähle, dann 
ist Zeile 61 hier
  Backlight=1;          // Backlight ein

//Notwendige Funktionen zum Booten     <----------------

  GLCD_Initialisierung();

und hat IMHO nichts mit einem i zu tun

Das hier
#define  Backlight  LATCbits.LATC2

stimmt?
(Ich habe keinen PIC Compiler hier. Und das ganz für mich compilierbar 
zu machen, ist einiges an Aufwand wobei die Gefahr besteht, dass ich den 
Fehler gleich mit ausbaue bzw. auskommentiere)

Autor: unsigned char (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Fehler ist in der besagten Zeile, ich habe oben bloß einen Teil 
entfernt indem private Daten stehen, Entschuldigung, dass war mein 
Fehler..

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grrrrrrrrrrrr

Und das meine ich ernst.
Such dir deinen Fehler selber. Schönen Tag noch.


(Ich setz mich doch nicht eine Viertel Stunde hin und versuch das ganze 
soweit compilierbar zu bekommen, dass ich eine vernünftige Fehlermeldung 
kriege, nur damit du mir nachher sagst, das das einzige was ich habe, 
nämlich die Zeilennummer, gar nicht stimmen kann, weil du in 
Wirklichkeit einen anderen Code hast. Verarschen kann ich mich auch 
selber)

Autor: unsigned char (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mh okay, wenn Du so schnell aus der Haut fährst mache ich es vielleicht 
wirklich besser selbst. Als wenn es Absicht gewesen wäre. Trotzdem 
danke.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unsigned char schrieb:
> Mh okay, wenn Du so schnell aus der Haut fährst mache ich es vielleicht
> wirklich besser selbst. Als wenn es Absicht gewesen wäre.

Ich hab dir vorher eine Warnung zukommen lassen. Ich hab dir genau 
geschrieben was du posten sollst und auch warum.

Und nein, ich fahr normal nicht so schnell aus der Haut. Aber es würde 
dir auch nicht gefallen, wenn du zum x-ten mal helfen willst und du 
hinten nach draufkommst, dass dir der Fragesteller, trotz ausdrücklicher 
Warnung, wieder mal Prügel zwischen die Beine wirft.
Zumal dein Compiler nicht wirklich hilfreich ist mit seinem 
Syntax-Fehler. Da muss dir doch selber klar sein, dass es für jemand 
anderen erst mal Aufwand bedeutet, das bei sich nachzustellen.

Autor: unsigned char (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja hast ja Recht. War nicht meine Absicht.

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.