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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.