Forum: Mikrocontroller und Digitale Elektronik Zeigerübergabe macht Kompilerwarungen


von Hans W. (hans_wurst)


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:
1
uint8_t werte[8];
2
3
void drive_forw_fun()
4
{
5
    werte[0] = 0x00;
6
    werte[1] = 0x00;
7
    werte[2] = 0x0C;
8
    werte[3] = 0x80;
9
    werte[4] = 0x0C;
10
    werte[5] = 0x80;
11
    werte[6] = 0xE0;
12
    werte[7] = 0xE0; 
13
    forward_msg_to_AT3290_fun(&werte);
14
}
15
16
void forward_msg_to_AT3290_fun(char *cmd_stream)
17
{
18
    uart_send_buf(cmd_stream, 8);
19
}


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

von Lupin (Gast)


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)

von Benedikt K. (benedikt)


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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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

von Hans W. (hans_wurst)


Lesenswert?

Die Warnungen sind weg. Danke euch.

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.