Forum: Mikrocontroller und Digitale Elektronik Variablen Deklaration/Definition


von unsigned char (Gast)


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
1
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:
1
extern unsigned char i;

Da ich die Variable "i" auch noch in anderen .c Dateien benötige, in 
denen dann über:
1
#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ß

von Karl H. (kbuchegg)


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.

von Karl H. (kbuchegg)


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.

von unsigned char (Gast)


Angehängte Dateien:

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ß

von Micha H. (mlh) Benutzerseite


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.

von unsigned char (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

Und die Fehlermeldung lautet jetzt wie?

von unsigned char (Gast)


Lesenswert?

Na klar:
1
----------------------------------------------------------------------
2
Release build of project `H:\Programierung\Programmecode\C\Multimedia Modul\Multimedia Modul.mcp' started.
3
Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.31, mcc18.exe v3.31
4
Sat Nov 27 15:21:21 2010
5
----------------------------------------------------------------------
6
Clean: Deleting intermediary and output files.
7
Clean: Done.
8
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-
9
H:\Programierung\Programmecode\C\Multimedia Modul\main.c:61:Error: syntax error
10
Halting build on first failure as requested.
11
----------------------------------------------------------------------
12
Release build of project `H:\Programierung\Programmecode\C\Multimedia Modul\Multimedia Modul.mcp' failed.
13
Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.31, mcc18.exe v3.31
14
Sat Nov 27 15:21:21 2010
15
----------------------------------------------------------------------
16
BUILD FAILED

von Karl H. (kbuchegg)


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
1
  Backlight=1;          // Backlight ein
2
3
//Notwendige Funktionen zum Booten     <----------------
4
5
  GLCD_Initialisierung();

und hat IMHO nichts mit einem i zu tun

Das hier
1
#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)

von unsigned char (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


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)

von unsigned char (Gast)


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.

von Karl H. (kbuchegg)


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.

von unsigned char (Gast)


Lesenswert?

Ja hast ja Recht. War nicht meine Absicht.

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.