Forum: Compiler & IDEs Warning mit Zeiger und Variablen


von no_know_how (Gast)


Lesenswert?

Hallo ich habe folgenden Code, der mir die Warning wirft:
1
passing argument 2 of 'test2' from incompatible pointer type

und wie genau umgehe ich die Warning?
1
#include <avr/io.h>
2
3
void test2(unsigned t1, unsigned char *t2) 
4
{
5
  
6
}
7
8
void test(unsigned char t1, unsigned char *t2) 
9
{
10
  test2(t1, &t2);
11
}
12
13
int main(void)
14
{
15
  unsigned char i = 0;
16
  unsigned char t = 123;
17
  
18
    while(1)
19
    {
20
        test(t, &i);
21
    }
22
}

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

no_know_how schrieb:
> test2(t1, &t2);

Mach da das & weg. test2 erwartet als zweites Argument einen Pointer 
auf unsigned char, und nicht einen Pointer auf einen Pointer auf 
unsigned char.

von DirkB (Gast)


Lesenswert?

test2() erwartet bei t2 einen Zeiger auf unsigned char.

t2 bei test() ist schon ein Zeiger auf unsigned char.

Daher brauchst du beim Aufruf von test2() in test() den Adressoperator 
nicht.
1
void test(unsigned char t1, unsigned char *t2) 
2
{
3
  test2(t1, t2);
4
}

In main ist i ein unsigned char (kein Zeiger). Darum brauchst du da das 
&

von no_know_how (Gast)


Lesenswert?

Vielen Dank

macht natürlich sinn :)

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.