Forum: Compiler & IDEs discards qualifiers from pointer target type


von Matze K. (phytomed)


Lesenswert?

Moin,


folgender Befehl:

Compiling: HeDiWet.c
avr-gcc -c -mmcu=atmega16 -I. -gstabs   -Os -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=HeDiWet.lst  -std=gnu99 -DF_CPU=4000000 
-DUART_BAUD_RATE=9600 -MD -MP -MF .dep/HeDiWet.o.d HeDiWet.c -o 
HeDiWet.o


ergibt folgende Warnungen:

HeDiWet.c: In function 'main':
HeDiWet.c:355: warning: passing argument 1 of 'snprintf' discards 
qualifiers from pointer target type
...
HeDiWet.c:366: warning: passing argument 1 of 'strncmp_P' discards 
qualifiers from pointer target type
...


Die entscheidenden Programmteile:

uart.c:

volatile char uart_buffer[32];


HeDiWet.h

extern volatile char uart_buffer[32];



HeDiWet.c:

#include uart.h
#include HeDiWet.h
char getDATA[] PROGMEM="getDATA\n";

...

snprintf(uart_buffer,20," Aktive Zeit");        // Zeile 355
...
if      (!strncmp_P(uart_buffer, getDATA,7)){   // Zeile 366
...


Es sind doch alles char-Variablen,
es sind auch "nur" Warnungen ...

Tausend Dank
Matthias

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> Es sind doch alles char-Variablen,

Es geht ja auch nicht um den Datentyp selbst, sondern um den "type
qualifier".  Da es nur drei Qualifier gibt (const, volatile, und
seit C99 restricted), kannst du dir selbst an 3 Fingern abzählen,
worüber er sich beschwert.

Da ja offenbar doch alles funktioniert, braucht's wohl das volatile
sowieso gar nicht für dich.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.