Gast
#3873186
Hallo, auch wenn es nur eine Warnung ist, "array subscript has type 'char'" Wie bekomme ich das am besten weg.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
|
Anzeige
|
array subscript has type 'char'
Gast
#3873186
Hallo, auch wenn es nur eine Warnung ist, "array subscript has type 'char'" Wie bekomme ich das am besten weg.
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.
Gast
#3873209
> width += (int16_t)pgm_read_byte(&array[s[i]][0]);
der cast ist unnötig
Gast
#3873261
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. Welcher Compiler ist das?
Gast
#3873283
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.
Gast
#3873284
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) 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.
Gast
#3873307
Was ich versucht habe ist (Nur die geänderten Zeilen
array subscript has type 'char'
array subscript has type 'char'
array subscript has type 'char'
geht
geht 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. Rolf Magnus schrieb: > Warum, ist doch ziemlich eindeutig? > s[i] ist vom Typ char Bei
ist s[i] aber nicht vom Typ 'char'. Trotzdem kriegt er die Warnung. 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.
Gast
#3873533
> Ü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. Rolf Magnus schrieb: > Übersehe ich jetzt irgendwas? Solange er diese Zeile nicht ändert: Arg! Du hast schon recht. Ich bin auf der Leitung gestanden. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|