compiler error bei mehrdimensionalen Array

Gast #284094
Lesenswert?

Moin
Ich will mit meinem ATmega128 auf einem GLCD große Buchstaben
darstellen(softfonts). Sie sind im Flash der MC als zweidimensionales
Array abgelegt:
//////////////////////////////////
#include <avr/pgmspace.h>

const unsigned char fontsbig[104][48] PROGMEM = {
{   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //
ASCII = 032  SPACE
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{   0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,    //
ASCII = 033  !
    0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,
...
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
//////////////////////////////////

Zugreifen von der Grafikroutine möchte ich so
//////////////////////////////////
currentbyte=pgm_read_byte(&fontsbig[sign][i]);
//////////////////////////////////

Doch an der Stelle meckert mein Compiler(avr-gcc (GCC) 3.4.3) und
schmeißt mir diese Fehlermeldung vor die Füße:
//////////////////////////////////
lcd_fonts.c:58: error: invalid use of array with unspecified bounds
//////////////////////////////////

Nach meinem Wissen hab ich hier nicht verkehrt gemacht, bei
eindimensionalen Arrays klappt es auf diese Weise ja auch.
Wo ist hier der Haken. Oder ist es gar ein Compilerfehler?

Danke Schuddi
#284095
Lesenswert?

Zeig doch mal mehr Source Code.
Aus dem was Du bisher preisgegeben hast, kann man noch nicht
viel folgern.

Einschub: Warum denken immer alle gleich an Compilerfehler?
Klar haben Compiler auch Fehler, sind auch nur Programme.
Aber 99.9% aller Fehler sind Programmierer-Fehler und keine
Compilerfehler. Du kannst davon ausgehen, dass wenn ein Compiler
einen Fehler hat, dann steckt der irgendwo in 'esoterischen'
Bereichen der Sprache. Dass ein Durchscnittsprogrammierer einen
Compilerfehler findet ist weniger wahrscheinlich wie 6 Richtige
im Lotto.
Gast #284097
Lesenswert?

Ne, is auch kein Compilerfehler. Ich muß da ganze anders deklarieren.

"const unsigned char fontsbig[104][48] PROGMEM" ist in der Datei
"fontsbig.c" abgelegt und in dem dazugehörigen Header mit "extern
const unsigned char fontsbig[][] PROGMEM;" für andere c-Dateien
zugänglich gemacht.
Der Aufruf "currentbyte=pgm_read_byte(&fontsbig[sign][i]);" findet in
der Datei "lcd_fonts.c" statt.
Hier tritt der Fehler auf.

Wenn ich die Daten von "const unsigned char fontsbig[104][48]
PROGMEM" in der Datei "lcd_fonts.c" ablege, von woaus auch der
Aufruf kommt, haut alles hin.

Wie kann ich auf die Daten in der anderen Datei trotzdem zugreifen?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren