www.mikrocontroller.net

Forum: Compiler & IDEs • void eeprom_write_dword (uint32_t __p, uint32_t __value)


Autor: Hendrik L. (lbd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

warum finde ich keine Funktion

• void eeprom_write_dword (int32_t __p, int32_t __value)

sondern nur

• void eeprom_write_dword (uint32_t __p, uint32_t __value)

????

Der Compiler schmeißt natürlich warnings, wenn ich mit der letzten 
Funktion int32 Werte speichern möchte ...!

Danke für Eure Zeit!

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann zeige ihm mit einem cast, wer der Herr im Haus ist!

Autor: Hendrik L. (lbd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Wachtler schrieb:
> Dann zeige ihm mit einem cast, wer der Herr im Haus ist!

Danke für die Antwort - beantwortet aber leider meine Frage nicht ...!

Haben die Entwickler wirklich gewollt, dass man mit "Cast"s arbeitet ?

Danke im voraus!

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hendrik L. schrieb:
> warum finde ich keine Funktion
>
> • void eeprom_write_dword (int32_t __p, int32_t __value)
>
> sondern nur
>
> • void eeprom_write_dword (uint32_t __p, uint32_t __value)
>
> ????

Weil man in C keine zwei unterschiedlichen Funktionen mit dem selben 
Namen definieren kann!!!!

Hendrik L. schrieb:
> Haben die Entwickler wirklich gewollt, dass man mit "Cast"s arbeitet ?

Sie wollten nur nicht Dutzende von eigentlich gleichen Funktionen 
definieren, die sich nur im Namen und im Parametertyp unterscheiden.
Was ist mit einer Version für float oder einer für eine Struktur aus 
zwei 16-Bit-Werten, einem 32 Bit breiten Enum-Typ, einem Array aus 4 
Bytes, ...?

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hendrik L. schrieb:
> Haben die Entwickler wirklich gewollt, dass man mit "Cast"s arbeitet ?

Sonst hätten sie sie dir nicht gegeben.

Autor: Michael Buesch (mb_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hendrik L. schrieb:
> Haben die Entwickler wirklich gewollt, dass man mit "Cast"s arbeitet ?

In diesem Fall ja. Du musst halt nur den gleichen cast auch bei dem 
dazugehörigen eeprom_read_dword() verwenden.

Autor: Hendrik L. (lbd)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Buesch schrieb:
> Hendrik L. schrieb:
>> Haben die Entwickler wirklich gewollt, dass man mit "Cast"s arbeitet ?
>
> In diesem Fall ja. Du musst halt nur den gleichen cast auch bei dem
> dazugehörigen eeprom_read_dword() verwenden.

Ist schon klar - vielen Dank!

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

Bewertung
0 lesenswert
nicht lesenswert
Als C-Entwickler sollte das ja auch kein Problem sein. Kann man sich ja 
auch selber machen
void eeprom_write_int32 (int32_t __p, int32_t __value)
{
  eeprom_write_dword( __p, (uint32_t)__value );
}

das ganze noch in ein Header File, mit einem 'inline' garnieren, und 
schon hat sich ein 'Problem' in Luft aufgelöst.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alternativ würde das ganze sogar als #define-Makro funktionieren. Aber 
die Inline Variante ist natürlich zu bevorzugen.

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wobei die Variante:
Karl heinz Buchegger schrieb:
> void eeprom_write_int32 (int32_t __p, int32_t __value)
> {
>   eeprom_write_dword( __p, (uint32_t)__value );
> }
immer noch Warnings produziert. So gehts:
void eeprom_write_int32 (int32_t __p, int32_t __value)
{
  eeprom_write_dword( (uint32_t*)(uint16_t)__p, (uint32_t)__value );
}
Vermutlich ist aber auch noch ein '*' verloren gegangen, also eher so:
void eeprom_write_int32 (int32_t *__p, int32_t __value)
{
  eeprom_write_dword( (uint32_t*)__p, (uint32_t)__value );
}

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stimmt, da fehlte der * (und zwar schon von der ersten Frage an)

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.