Variablen Deklaration/Definition

Gast #1953336
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ß
#1953355
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.
#1953363
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.
Gast #1953392
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
#1953466
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)
#1953486
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)
#1953509
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren