DOGS102-6 Beispielcode von EA - compiler changes

OP #5897030
Hallo,

das Example ist von 2011 und läuft auf dem aktuellen compiler nicht.

dass ich die Deklarationen
1
static uint8_t __attribute__ ((progmem)) font_6x8[font_6x8_LEN] =
in
1
const uint8_t __attribute__ ((progmem)) font_6x8[font_6x8_LEN] =
wechseln muss, habe ich schon herausgefunden.
jedoch ist noch ein  weiterer Fehler den ich nicht beseitigt bekomme:

Originalcode
1
const uint8_t *ptr_font_6x8 PROGMEM = font_6x8;
Nach einer FAQ muss ich hier den * verschieben:
1
const uint8_t * ptr_font_6x8 PROGMEM = font_6x8;
Dies scheint aber falsch, was muss ich machen um die Fehlermeldung:
1
error: variable 'ptr_font_6x8' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
los zu bekommen?

Gruß
Anselm
Persönliche Seite
Anselm 6. schrieb:
> Nach einer FAQ muss ich hier den * verschieben:

Das bewirkt exakt gar nichts.
1
const uint8_t *ptr_font_6x8 PROGMEM = font_6x8;
2
const uint8_t * ptr_font_6x8 PROGMEM = font_6x8;
3
const uint8_t* ptr_font_6x8 PROGMEM = font_6x8;

bedeuten nicht nur das gleiche, sondern sogar dasselbe.

Das Problem ist, daß Dein Pointer const ist, nicht aber das, worauf er 
zeigt.

1
uint8_t* const ptr_font_6x8 PROGMEM = font_6x8;

Hier ist das, worauf der Pointer zeigt, const, nicht aber der Pointer 
selbst.

Und das hier
1
const uint8_t* const ptr_font_6x8 PROGMEM = font_6x8;

macht sowohl den Pointer als auch das, worauf er zeigt, const.
OP
Hallo Rufis,

ich habe mal das Projekt komplett angehängt,

es ist nur der Beispielcode von EA mit den 2 Modifikationen.
Jetzt habe ich "multiple definitionen" und noch
1
/Source/main.c:69:2: warning: passing argument 4 of 'lcd_string' discards 'const' qualifier from pointer target type [enabled by default]
2
  lcd_string(0,5,"EA DOGS102-6!", ptr_font_8x16, INVERS); //Printing a line in big fonts, inverted

vielleicht magst du da mal rein schauen bitte.

Danke
Anselm
Angehängte Dateien:
Persönliche Seite
Anselm 6. schrieb:
> vielleicht magst du da mal rein schauen bitte.

Nö, ich hab' anderes zu tun.

Anselm 6. schrieb:
> Jetzt habe ich "multiple definitionen"

Hast Du möglicherweise irgendeine Variable in einer *.h-Datei definiert?

> und noch

Sieh Dir den Protypen der Funktion an, vergleiche den Typ jedes 
einzelnen Arguments mit dem, was Du beim Aufruf übergibst.
Gast
Anselm 6. schrieb:
> ich habe mal das Projekt komplett angehängt,

Nein hast du nicht.

Du hast nur ein paar Sourcen / Header geliefert.
Zu einem Projekt gehört mindestens eine Projekt-Datei.
Ob es dann komplett ist stellt sich erst noch heraus.

Nicht einmal den Controller-Typ hast du genannt.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.