compiler warning bei einem Pointer auf ein const. Objekt

Gast #3914725
Lesenswert?
• ▲
▼
Hallo,

ich versuche gerade ein Display (5510 Nokia) in Betrieb zu nehmen.
Ich habe mir folgenden Treiber heruntergeladen:
http://www.jtronics.de/avr-projekte/display-nokia3310.html
Anscheinend wurde das mit einem anderen Kompiler kompiliert, jedenfalls 
waren einige Fehler drin.

Linien zeichnen geht -> Display ist schon mal richtig angeschlossen.
Mein Kompiler hat sich nun an folgender Zeile aufgehängt:
1
static uint8_t __attribute__ ((progmem)) f8x8[] = {...
Soweit ich rausgefunden habe, müssen die wohl noch als konstant 
deklariert werden:
1
static const uint8_t __attribute__ ((progmem)) f8x8[] = {...

Er wirft jetzt folgende Warnung:
Warning  1  passing argument 1 of 'N3310_SetFont' discards 'const' 
qualifier from pointer target type [enabled by default]
bei der Zeile in der main.c:
1
 N3310_SetFont(&f8x8[0]);


Die Funktion sieht so aus:
1
 void   N3310_SetFont(uint8_t  *pointer)      {FontPointer = pointer;TextBreite = pgm_read_byte_near(&FontPointer[2]);}

Ich habe das dann in const uint8_t  *pointer abgeändert (Pointer auf 
konstantes Objekt), leider hat dies keine Besserung gebracht.

Er wirft nun die Warnung
Warning  3  assignment discards 'const' qualifier from pointer target 
type [enabled by default]
bei dieser Zeile:
1
 FontPointer = pointer

Hätte jemand der c-Profis einen Tip?
Vielen Dank!
Liebe Grüße
Tommy
Gast #3914727
Lesenswert?
• ▲
▼
> Warning  3  assignment discards 'const' qualifier from pointer target [..]
> FontPointer = pointer
>
> Hätte jemand der c-Profis einen Tip?

Dazu brauchts keinen C-Profi - einfach das const weiter 
durchpropagieren, hier beim FontPointer.

Stell Dich drauf ein, dass Dir der Compiler noch ein paar mehr Stellen 
sagen wird wo es noch nicht passt.
Gast #3914728
Lesenswert?
• ▲
▼
Welcher Compiler? Macht der sdcc auch und es hat keine neg. 
Auswirkungen.

const char* const test[] = {.............}

erzeugt diesen Fehler bei Verwendung von test.

#pragma disable_warning #

hilft auch :-)
Gast #3914736
Lesenswert?
• ▲
▼
Tommy schrieb:
> discards 'const' qualifier
Das sagt, das du etwas, das als const deklariert ist, an etwas "zuweist" 
das nicht const ist, also sowas:
1
void foo(char* p);
2

3
int main(void)
4
{
5
  const char x[] = "Hallo Welt";
6
  foo(x);
7
}
x ist const, p aber nicht, daher die warnung. einfach zu beheben durch:
1
void foo(const char* p);

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.