www.mikrocontroller.net

Forum: Compiler & IDEs eeprom lesen compiler Warnung


Autor: andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: andy (Gast)
Datum:

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

gruss

andy

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.