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

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