Forum: Compiler & IDEs Compilerfehler bei ProgrammersNotepad


von Marcel (Gast)


Lesenswert?

Hi,
möchte gerade auf ProgrammersNotepad umsteigen, da mein alter Compiler 
in seiner Freewareversion ab einer bestimmten Dateigröße nichtmehr 
arbeitet.

Als Makefile hab ich einfach die aus dem Sampleordner von WinAVR 
kopiert. Da ich in erster Linie mein Programm compilieren will, hab ich 
die Makefile so gelassen, ohne den Controllertyp etc. einzustellen.

Wie zu erwarten funktioniert das natürlich nicht so reibungslos, da das 
ganze mir Fehler ausspuckt, die ich mir nicht erklären und 
dementsprechend auch nicht beheben kann.

Aber fange ich einfach mal:

main.c:37: error: expected declaration specifiers before 'interrupt'

Der dazugehörige Code: void timer0() interrupt 1 using 2
Wird wohl daran liegen, das im PN ein Interruptfunktion anders 
geschrieben wird. Die Frage ist wie.

main.c:54: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before '{' token
main.c:66: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before '{' token
main.c:82: error: expected '=', ',', ';', 'asm' or '__attribute__' 
before '{' token

Hier der dazugehörige Code. Es ist egal in der Funktion steht.

void Textablauf(void)
{
...
}

Ähnlich sehen die beiden anderen Funktionen, auf die sich die 
Fehlermeldungen beziehen, aus.


main.c:101: error: expected '{' at end of input

Was er da vermisst weiß ich auch nicht. Verweist auf die letze Zeile im 
Code, die mit einem "}" das Hauptprogramm abschließt.

Hoffe man kann mir helfen^^"

von Johannes M. (johnny-m)


Lesenswert?

Du müsstest Dir mal in der libc-Doku oder im AVR-GCC-Tutorial 
anschauen, wie in WINAVR-C Interrupt Handler definiert werden. 
Jedenfalls nicht so, wie Du es anscheinend in Deinem Programm 
geschrieben hast. Folglich kennt der Compiler die Syntax nicht und rotzt 
Fehlermeldungen raus.

Je nachdem, welchen "alten Compiler" Du da hattest, wird es vermutlich 
noch ein paar andere Fehlermeldungen geben.

> main.c:101: error: expected '{' at end of input

> Was er da vermisst weiß ich auch nicht. Verweist auf die letze Zeile im
> Code, die mit einem "}" das Hauptprogramm abschließt.
Das dürfte ein Folgefehler sein. Beseitige erstmal die Fehler mit der 
Interrupt-Handler-Deklaration. Wenn der Fehler dann immer noch da ist, 
ist noch an anderer Stelle der Wurm drin.

von Rolf Magnus (Gast)


Lesenswert?

> möchte gerade auf ProgrammersNotepad umsteigen, da mein alter Compiler
> in seiner Freewareversion ab einer bestimmten Dateigröße nichtmehr
> arbeitet.

Programmer's Notepad ist kein Compiler, sondern ein Editor.

> main.c:37: error: expected declaration specifiers before 'interrupt'
>
> Der dazugehörige Code: void timer0() interrupt 1 using 2
> Wird wohl daran liegen, das im PN ein Interruptfunktion anders
> geschrieben wird. Die Frage ist wie.

Mit PN hat das nichts zu tun, sondern mit dem verwendeten Compiler. 
Falls du GCC verwendest (immerhin sind wir im GCC-Forum), empfielt es 
sich, die Doku der avr-libc zu lesen. Da steht drin, wie man 
Interrupt-Routinen definiert.

> Hoffe man kann mir helfen^^"

Kaum. Die drei Zeilen Code, die du gepostet hat, enthalten keinen 
Fehler, der die Meldungen erklären würde. Eine völlig ins Blaue 
geschossene Idee wäre, daß du vielleicht irgendwo vorher mal eine 
Klammer vergessen hast und das ein Folgefehler ist.

von holger (Gast)


Lesenswert?

>Der dazugehörige Code: void timer0() interrupt 1 using 2

Das sieht mir nach Code für einen 8051 aus.
Damit kann der WinAVR nichts anfangen.

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.