Indem du stattdessen unsigned char nimmst?
Das Problem mit char ist nämlich, daß es (je nach Umgebung) auch negativ
sein kann, was bei einem Arrayindex in aller Regel eher unerwünscht ist.
Mit "unsigned char" kommt der fehler auch. Erst wenn ich darauf einen
uint8_t, was eigentlich gleichbedeutend mit "unsigned char" sein müsste,
geht es.
Früher konnte man noch einfach s[i] in ein unsigned int casten.
Da gab es noch richtige Klammern dafür.
Früher war alles besser.
Und Lochkarten gab es da auch.
Werner schrieb:> AVR/GNU C Compiler : 4.8.1>> Aktuelles Atmel Studio (Version: 6.2.1502 - Service Pack 1)Atmel Studio> 6 (Version: 6.2.1502 - Service Pack 1)
Interessant.
> Mit "unsigned char" kommt der fehler auch.
Ok. Was hast du wie, exakt, geändert.
mal abgesehen von der Diskrepanz 'array' versus 'font_bold'
Den ersten würde ich ja noch verstehen.
Aber bei den restlichen bin ich ratlos. Die sollten meinem Dafürhalten
nicht sein.
Karl Heinz schrieb:> Den ersten würde ich ja noch verstehen.> Aber bei den restlichen bin ich ratlos. Die sollten meinem Dafürhalten> nicht sein.
Warum, ist doch ziemlich eindeutig?
s[i] ist vom Typ char und wird als Array-Index verwendet, deshalb kommt
die Meldung. Nur bei den letzten beiden castet er das nach uint8_t, und
deshalb sind das die einzigen, wo die Warnung nicht kommt.
Karl Heinz schrieb:> Bei> const unsigned char array[256][9] PROGMEM={>> ist s[i] aber nicht vom Typ 'char'.
Übersehe ich jetzt irgendwas? Solange er diese Zeile nicht ändert:
Werner schrieb:> uint16_t func(char *s)
ist s[i] doch immer vom Typ char, völlig unabhängig davon, wie das
Array definiert ist.
> Übersehe ich jetzt irgendwas? Solange er diese Zeile nicht ändert:>> Werner schrieb:>> uint16_t func(char *s)>> ist s[i] doch immer vom Typ char, völlig unabhängig davon, wie das> Array definiert ist.
So sehe ich das auch. Da muss der Funktionskopf angepasst werden. Oder
richtig gecastet.