Forum: Compiler & IDEs WinAvr kompiliert nicht: expected '=', ',', ';', 'asm' or '


von Robert S. (razer) Benutzerseite


Lesenswert?

Hallo an alle,

Ich schreibe gerade einen Bootloader. Leider lässt sich das ganze nicht 
kompilieren. In der Main hab ich nur ein return 0:
1
#include "stk500boot.h"
2
3
int main(void)
4
{
5
  return 0;
6
}

In der stk500boot.h wird die Datei communication.h inkludiert. In dieser 
Datei kann man mit einem Define zwischen RS232 und USB Mode (mit nem 
FT245) wählen.

Wähle ich RS232 lässt es sich kompilieren. Wenn ich USB aktiviere, wird 
der RS232 Code auskommentiert (über #ifdefs). Doch nun funktioniert der 
Code nicht mehr und es gint folgende Fehlermeldung:
1
stk500boot.c: In function 'recchar':
2
stk500boot.c:5: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
3
stk500boot.c:7: error: expected '{' at end of input
4
stk500boot.c:7: warning: no return statement in function returning non-void

Das ganze bezieht sich auf die main C File. Jedoch gibt es da gar keine 
Funktion recchar(). Die gibt es nur im RS232 Mode. Sie wird aber auch 
nicht verwendet.

Ausgeklammert hab ich so:
1
#include "communication.h"
2
3
#if COMM_MODE == RS232
4
void sendchar(char c)
5
{
6
    ...
7
}
8
9
unsigned char recchar(void)
10
{
11
    ...
12
}
13
#endif

Weiß jemand woran das liegen kann?

Danke im Voraus
Gruß Robert

von Andreas K. (a-k)


Lesenswert?

Wie sind due Macros COMM_MODE und RS232 definiert?

Merke: #if Ausdrücke sind keine Textvergleiche sondern numerische 
Berechnungen.

von Robert S. (razer) Benutzerseite


Lesenswert?

Sind numerische Werte:
1
#define USB_FDXX  0x00
2
#define  RS232    0x01
3
4
#define COMM_MODE  USB_FDXX

von Andreas K. (a-k)


Lesenswert?

Wirst dann wohl mehr Source bringen müssen.

Tip: gcc -E wirft das Ergebnis vom Präprozessor aus. Bisweilen ungemein 
hilfreich.

von yalu (Gast)


Lesenswert?

Der Fehler liegt wahrscheinlich in einem der Header-Files, wird aber
erst in stk500boot.c erkannt. Das ist bspw. dann der Fall, wenn die
Klammern in einem der Header-Files nicht richtig gepaart sind.

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.