Forum: Compiler & IDEs differ in signedness bei prog_char


von Frank J. (frajo)


Lesenswert?

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?

von Frank J. (frajo)


Lesenswert?

Ich verwende auch die LCD lib von Peter Fleury:
1
const prog_char ProgInfo1[] = ""__DATE__"";
2
const prog_char ProgInfo2[] = ""__AVR_LIBC_VERSION_STRING__"";
3
4
void lcd_puts_p(const char *progmem_s)
5
/* print string from program memory on lcd (no auto linefeed) */
6
{
7
    register char c;
8
    while ( (c = pgm_read_byte(progmem_s++)) ) {
9
        lcd_putc(c);
10
    }
11
}/* lcd_puts_p */
12
13
lcd_gotoxy(1, 0);
14
lcd_puts_p(ProgInfo1);
15
lcd_gotoxy(1, 1);
16
lcd_puts_p(ProgInfo2);
Da gibt es keine Warnung beim Übersetzen.

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.