Forum: Compiler & IDEs WinAVR-20060125: warnung: 'misspelled signalhandler'


von mse (Gast)


Lesenswert?

Ich habe soeben die neue Version von WinAvr installiert und ein bis
dahin problemlos laufendes Programm compiliert:

#include <avr/interrupt.h>
#include <avr/signal.h>

SIGNAL(SIG_OUTPUT_COMPARE1A)
{
  //...
}

Ergebnis:
#warning "This header file is obsolete.  Use <avr/interrupt.h>."
Warnung: `_Z11__vector_12v' appears to be a misspelled signal handler

Wenn ich '#include <avr/signal.h>' auskommentiere, erhalte ich
weiterhin die zweite Warnung, die erste fällt logischer weise weg, da
sie von besagtem Header-File generiert wird.

In beiden Fällen (mit und ohne '#include <avr/signal.h>') wird ohne
Fehlermeldungen compiliert und gelinkt. Das hex-File läßt sich laden
und das Programm läuft erwartungsgemäß.

Weiß jemand, was mir diese Warnungen (vor allem die zweite) sagen
wollen und wie man sie verhindert?
(Indem man den Ansrüchen des Compilers gerecht wird, nicht indem man
einfach irgendwelche Warnungen unterdrückt! ;)

Gruß, Michael

von Hubert.G (Gast)


Lesenswert?

Hängt mit dem geänderten Interrupt zusammen, im Manual nachlesen, die
Interrupt-Aufrufe haben sich geändert.

von Fritz G. (fritzg)


Lesenswert?

Hab mal getestet. Bei mir gehts, allerdings ist dein Signal im .lst File
bei mir __vector_12, wo kommt bei dir das _Z11 und hinten das v her?

Hab für den Mega32 übersetzt, welchen Controller hast du?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bitte deklariere deine ISRs mal in einer C-Datei statt in einer
C++-Datei.  Im Prinzip müsste das auch irgendwie mit

extern "C" ...

gehen.  Kannst gern einen Bugreport für avr-libc aufmachen.

_Z11__vector_12v ist weiter nichts als der C++-vermanschte Name für
__vector_12().

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.