mikrocontroller.net

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


Autor: Robert S. (razer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:
#include "stk500boot.h"

int main(void)
{
  return 0;
}

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:
stk500boot.c: In function 'recchar':
stk500boot.c:5: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
stk500boot.c:7: error: expected '{' at end of input
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:
#include "communication.h"

#if COMM_MODE == RS232
void sendchar(char c)
{
    ...
}

unsigned char recchar(void)
{
    ...
}
#endif

Weiß jemand woran das liegen kann?

Danke im Voraus
Gruß Robert

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sind due Macros COMM_MODE und RS232 definiert?

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

Autor: Robert S. (razer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sind numerische Werte:
#define USB_FDXX  0x00
#define  RS232    0x01

#define COMM_MODE  USB_FDXX

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wirst dann wohl mehr Source bringen müssen.

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

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.