PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : error: parse error before '=' token



Bääääär
29.06.2007, 17:48
Ich habe die Fehlermeldung gleich als Thementitel genommen, da sie mich gleich 14 Mal erfreut.

Folgender Code...

//////////////////////////////////////////////////////////////////
// Odometrie- Programm //
//////////////////////////////////////////////////////////////////
// Autor: Johannes Neumann //
// Version: 1 //
// Beginn der Entwicklung: 29.06.2007 //
// Fertigstellung : xx.xx.xxxx //
//////////////////////////////////////////////////////////////////


// Includes ///////////////////////////////////////////////+
#include "asuro.h"

// Konstanten /////////////////////////////////////////////+
#define cBarrier = 600
#define cHysteresis = 15
#define cBlack = 0
#define cWhite = 1

// Main- Funktion: Interne Variablen //////////////////////+
unsigned char Speed = 255; // Festzulegende Geschwidigkeit von Asuro
signed int Counter = 0; // Der Counter, welcher den Unterschied zwischen Rechts und Links zählt
unsigned int OdoData[2] = {0,0}; // Variable für die Odometrie- Daten
signed int OdoStatus[2] = {0,0}; // Status (cBlack / cWhite) der einzelnen Räder
signed int Lights[2];

// Main- Funktion: Funktionskopf //////////////////////////+
int main(void) {

// Main- Funktion: Initialisierung ////////////////////////+
Init();
MotorDir(FWD, FWD);
OdometrieData(OdoData);
OdoStatus[0] = (OdoData[0] < cBarrier); // Festlegen der Startposition (cBlack / cWhite) durch Vergleich
OdoStatus[1] = (OdoData[1] < cBarrier); // der Daten mit der Grenze zwischen beiden Zuständen.

// Main- Funktion: Endlosschleife /////////////////////////+
while(1) {
OdometrieData(OdoData); // Odometriedaten einlesen

if ((OdoStatus[0] == cBlack) && (OdoData[0] < cBarrier - cHystersis))
{
OdoStatus[0] = cWhite; // Wenn der Linke Sensor von Schwarz auf Weiß wechselt...
Counter ++; // Zählen...
}
else
if ((OdoStatus[0] == cWhite) && (OdoData[0] > cBarrier + cHystersis))
{
OdoStatus[0] = cBlack; // Wenn der Linke Sensor von Weiß auf Schwarz wechselt...
Counter ++; // Zählen...
}

if ((OdoStatus[1] == cBlack) && (OdoData[1] < cBarrier - cHystersis))
{
OdoStatus[1] = cWhite; // Wenn der Rechte Sensor von Schwarz auf Weiß wechselt...
Counter --; // Zählen...
}
else
if ((OdoStatus[1] == cWhite) && (OdoData[1] > cBarrier + cHystersis))
{
OdoStatus[1] = cBlack; // Wenn der Rechte Sensor von Weiß auf Schwarz wechselt...
Counter --; // Zählen...
}

Lights[0] = OdoStatus[0]; // BackLed- Status setzen
Lights[1] = OdoStatus[1];

BackLED(Lights[0], Lights[1]); // BackLeds setzen

if (Counter < -255) Counter = -255;// Überlauf verhindern
if (Counter > 255) Counter = 255;// - || -

if (Counter > 0) MotorSpeed(Speed - Counter, Speed)
else
if (Counter < 0) MotorSpeed(Speed, Speed + Counter);
}

return 0;
}

...erzeugt beim Compillieren mit der AsuroLib folgenden Fehler:


test.c:34: error: parse error before '=' token
test.c:35: error: parse error before '=' token
test.c:41: error: parse error before '=' token
test.c:41: error: parse error before '=' token
test.c:43: error: parse error before '=' token
test.c:47: error: parse error before '=' token
test.c:47: error: parse error before '=' token
test.c:49: error: parse error before '=' token
test.c:53: error: parse error before '=' token
test.c:53: error: parse error before '=' token
test.c:55: error: parse error before '=' token
test.c:59: error: parse error before '=' token
test.c:59: error: parse error before '=' token
test.c:61: error: parse error before '=' token
test.c:74: error: parse error before "else"

Ich weiß echt nicht, was an meinen "="s so schlimm sein soll. Kann mir jemand helfen?

Danke schonmal,
Bääääär

Steinigtmich
29.06.2007, 18:31
Lass einfach das = aus den defines weg.
Also z.B.
#define cBarrier 600
Bei Defines wird nicht einer Variablen etwas zugewiesen, sondern vom Preprocessor noch vor dem Compilen z.B. jedes im Quellcode vorkommende "cBarrier" durch den Wert 600 ersetzt.

Bääääär
29.06.2007, 18:44
och nee. Jepp, du hast recht. Nun, ich progge seit mehreren Jahren Delphi. Und da werden die Konstanten mit "=" definiert. Simple "Syntaxvertauschung".

Danke.

Bääääär
29.06.2007, 18:48
es sind noch 2 kleine fehler drin:
Zeile 74: ein ";" fehlt.

Und bei den Abfragen muss es natürlich cHysteresis heißen.