Forum: Compiler & IDEs eeprom lesen compiler Warnung


von andy (Gast)


Lesenswert?

Hallo,ich sitz hier vor einem mega32 den ich mit WinAvr programmiere.
Wenn ich mit

char Feuchte_max EEMEM;

eine Speicherstelle im eeprom anlege (vielleicht falsch ausgedrückt,aber 
ihr wisst sicher was ich meine),und dann mit

max_feuchte = eeprom_read_byte (&Feuchte_max);

lesen will oder mit

eeprom_write_byte (&Feuchte_max,83);

beschreiben will kommt folgende Warnmeldung

../neuer_test.c:60: warning: pointer targets in passing argument 1 of 
'__eewr_byte_m32' differ in signedness

Es klappt alles so wie es soll,nur was soll mir diese Warnung sagen?
Habe schon gegoogelt,aber nichts passendes gefunden.
Wäre nett,wenn mir das jemand erklären könnte.

gruss
andy

von Karl H. (kbuchegg)


Lesenswert?

andy schrieb:

> Es klappt alles so wie es soll,nur was soll mir diese Warnung sagen?

Gewöhn dir an, dass der richtige Datentyp für ein Byte
unsigned char
ist.

Entweder das oder uint8_t

Ein char hingegen ist nicht definiert, ob der ein Vorzeichen hat oder 
nicht (ob er signed oder unsigned ist - na klingelts? Die Fehlermeldung 
spricht von 'differ in signedness')
Einen char benutzt du nur dann, wenn du es mit Buchstaben im Sinne von 
Textverarbeitung zu tun hast. Für alles andere nimmst du entweder signed 
char oder unsigned char (oder int8_t oder uint8_t)

Und ja, manche Funktionen gehen natürlich für alles
Für char, für unsigned char, für signed char

Aber für irgendeinen Datentyp dieser 3 muss man sich allerdings im 
Funktionsheader entscheiden. Und mangels besseren Wissens, nimmt man 
dann unsigned char. Und wenn du da dann einen signed char angibst, dann 
hast du eben eine Differenz im Sinne von
   signed - unsigned : Das passt nicht zusammen

von andy (Gast)


Lesenswert?

Hallo vielen Dank für die erklärung.
Werde jetzt erstmal was über die verschiedenen Datentypen lesen.

gruss

andy

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.