mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeigerübergabe macht Kompilerwarungen


Autor: Hans Wurst (hans_wurst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

irgendwie stehe ich gerade auf dem Schlauch. Wenn ich nachfolgende 
Funktionsparameter verwende, warum bekomme ich dann diese Fehlermeldung? 
Eigentlich sollte es doch richtig sein? Korrekt funktionieren tut es 
außerdem auch.


Code:
uint8_t werte[8];

void drive_forw_fun()
{
    werte[0] = 0x00;
    werte[1] = 0x00;
    werte[2] = 0x0C;
    werte[3] = 0x80;
    werte[4] = 0x0C;
    werte[5] = 0x80;
    werte[6] = 0xE0;
    werte[7] = 0xE0; 
    forward_msg_to_AT3290_fun(&werte);
}

void forward_msg_to_AT3290_fun(char *cmd_stream)
{
    uart_send_buf(cmd_stream, 8);
}


Fehlerausgabe:
../cmd.c: In function 'drive_forw_fun':
../cmd.c:232: warning: passing argument 1 of 'forward_msg_to_AT3290_fun' from incompatible pointer type

Autor: Lupin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde es so machen:

forward_msg_to_AT3290_fun((char *)werte);


Bin mir nicht ganz sicher ob du das & brauchst.


uint8_t ist wahrscheinlich nicht das gleiche wie char. Je nach 
Compiler-Flag/Einstellung kann char standardmäßig entweder mit oder ohne 
vorzeichen sein, ich denke mal dein compiler verwendet chars mit 
Vorzeichen.

Du kannst auch einfach deine Funktion ändern in:
void forward_msg_to_AT3290_fun(unsigned char *cmd_stream)
... oder noch besser:
void forward_msg_to_AT3290_fun(uint8_t *cmd_stream)

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das & muss weg, da werte schon die Adresse von werte ist. Dann wird der 
Compiler nur noch über das Vorzeichen meckern, das bekommt man so weg, 
wie Lupin schrieb.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder so:
>   forward_msg_to_AT3290_fun((char*)&werte[0]);

Autor: Hans Wurst (hans_wurst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Warnungen sind weg. Danke euch.

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.