www.mikrocontroller.net

Forum: Compiler & IDEs compiler error bei mehrdimensionalen Array


Autor: B. Schuster (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl heinz Buchegger (heinzi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl heinz Buchegger (heinzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Insbesondere sind alle Codestellen interessant wo
fontsbig im Zusammenhang mit [] vorkommt.

Autor: B. Schuster (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Irgwer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei der Deklaration von externen Arrays darf man nur den ersten Index
weglassen.

Versuchs mal mit:

extern const unsigned char fontsbig[][48] PROGMEM;

Autor: B. Schuster (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, es läuft.
Danke Irgwer

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.