PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro Parse Error



Grafenstein
06.01.2011, 18:04
Hallo, ich bin neu hier.

in dem Programm soll der Asuro den Lichtwert an den Computer schicken:


#include "asuro.h"
#define hundert Lichtwertlinks-1000*tausender;
#define zehn Lichtwertlinks-1000*tausender-100*hunderter;
#define eins Lichtwertlinks-1000*tausender-100*hunderter-10*zehner;


int main(void)
{
Init();
unsigned int data[2];
unsigned int Lichtwertlinks = data[0];
char tausender;
char hunderter;
char zehner;
char einer;
while(1){
LineData(data);
if (Lichtwertlinks >= 1000){
tausender = 1;
}
else{
tausender = 0;
}
if (hundert >= 900){
hunderter = 9;
}
else if (hundert >=800){
hunderter = 8;
}
else if (hundert >= 700){
hunderter = 7;
}
else if (hundert >= 600){
hunderter = 6;
}
else if (hundert >= 500){
hunderter = 5;
}
else if (hundert >= 400){
hunderter = 4;
}
else if (hundert >= 300){
hunderter = 3;
}
else if (hundert >= 200){
hunderter = 2;
}
else if (hundert >= 100){
hunderter = 1;
}
else {
hunderter = 0;
}
if (zehn >= 90){
zehner = 9;
}
else if (zehn >=80){

zehner = 8;
}
else if (zehn >= 70){
zehner = 7;
}
else if (zehn >= 60){
zehner = 6;
}
else if (zehn >= 50){
zehner = 5;
}
else if (zehn >= 40){
zehner = 4;
}
else if (zehn >= 30){
zehner = 3;
}
else if (zehn >= 20){
zehner = 2;
}
else if (zehn >= 10){
zehn = 1;
}
else {
zehner = 0;
}
eins = einer;

}
}


Beim compilieren kommt folgendes heraus:
test.c:24: error: parse error before ';' token
test.c:13: warning: unused variable `hunderter'
test.c:14: warning: unused variable `zehner'
test.c:15: warning: unused variable `einer'
make: *** [test.o] Error 1

Wenn ich das ganze in for-Schleifen verpacke...


#include "asuro.h"
#define hundert Lichtwertlinks-1000*tausender;
#define zehn Lichtwertlinks-1000*tausender-100*hunderter;
#define eins Lichtwertlinks-1000*tausender-100*hunderter-10*zehner;


int main(void)
{
Init();
unsigned int data[2];
unsigned int Lichtwertlinks = data[0];
char tausender;
char hunderter;
char zehner;
char einer;
int i;
while(1){
LineData(data);
if (Lichtwertlinks >= 1000){
tausender = 1;
}
for(i=9;i>=0;i--){
if(hundert >= i*100){
hunderter = i;
}
}
for(i=9;i>=0;i--){
if(zehn >= i*10){
zehner = i;
}
}

eins = einer;


}
}


...bekomme ich folgende Fehlermeldungen:
test.c:23: error: parse error before ';' token
test.c:28: error: parse error before ';' token
test.c:14: warning: unused variable `zehner'
test.c:15: warning: unused variable `einer'

radbruch
06.01.2011, 18:46
Hallo

if (hundert >= 900){

hundert kennt der Kompiler nicht.

Schau mal hier (und nachfolgendes):

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=328202#328202

Gruß

mic

Grafenstein
06.01.2011, 18:52
Kann ich hundert nicht definieren? (z.2)

radbruch
06.01.2011, 18:57
Ach, da oben, voll überlesen. Sorry. Deine Abfrage lautet also so:

if (Lichtwertlinks-1000*tausender; >= 900){

Am Ende des #define darf kein ; stehen!

Gruß

mic

Grafenstein
06.01.2011, 19:01
Ok,danke!

Das Programm geht leider immer noch nicht, es kommen die gleichen Errors..

radbruch
06.01.2011, 19:22
Es muss lauten: einer = eins;


#include "asuro.h"
#define hundert Lichtwertlinks-1000*tausender
#define zehn Lichtwertlinks-1000*tausender-100*hunderter
#define eins Lichtwertlinks-1000*tausender-100*hunderter-10*zehner


int main(void)
{
Init();
unsigned int data[2];
unsigned int Lichtwertlinks = data[0];
char tausender;
char hunderter;
char zehner;
char einer;
int i;
while(1){
LineData(data);
if (Lichtwertlinks >= 1000){
tausender = 1;
}
for(i=9;i>=0;i--){
if(hundert >= i*100){
hunderter = i;
}
}
for(i=9;i>=0;i--){
if(zehn >= i*10){
zehner = i;
}
}

einer = eins;


}
}


Besser wäre vielleicht:

LineData(data);
Lichtwertlinks = data[0];
if (Lichtwertlinks >= 1000){
tausender = 1;
}
else{
tausender = 0;
}

Grafenstein
06.01.2011, 19:32
Das stimmt, ich hätte das übersehen. Danke =)

Jetzt kommt auch die .hex-Datei.