Hallo,
Ich nutzte WinAVR-20071221 mit der avr-libc 1.6.0.
Bis jetzt hatte ich Werte im Programmspeicher so angelegt:
1 | const char unbekannt[]PROGMEM=("Unbekannt\n\r");
|
Benutzt habe ich sie wie folgt:
1 | void UartPutP(const char *progmem_s) {
|
2 | register char c;
|
3 | while((c = pgm_read_byte(progmem_s++))) UartPutC(c);
|
4 | }
|
5 |
|
6 | UartPutP(unbekannt);
|
Nun habe ich den Typ prog_char verwendet:
1 | const prog_char unbekannt[]=("Unbekannt\n\r");
|
und bekomme beim Kompillieren
main.c:53: warning: pointer targets in passing argument 1 of 'UartPutP'
differ in signedness
Dabei ist doch laut avr-libc:
1 | typedef char PROGMEM prog_char
|
prog_char basiert also auf char. Auch wenn ich in UartPutP statt char
dann prog_char schreibe, bleibt es bei diesem warning. Woran liegt das?