Forum: Compiler & IDEs Funktion mit 2 Rückgabewerten


von gast (Gast)


Lesenswert?

ist es möglich bei einer Funktion 2 Rückgabewerte zu erhalten, ohne dass 
der Rückgabewert ein array ist, also z.B:
1
uint8_t irgendwas(uint8_t *erg){
2
 erg=15;
3
 return 1;
4
}
5
...
6
uint_8 test=0;
7
uint_8 error=0;
8
error=irgendwas(test);

Ist dann error=1 und test=15, oder muss da noch ein cast gemacht werden 
wegen uint_8 und pointer?

Habe es probiert und bekomme folgende Fehlermeldung:
"warning: assignment makes pointer from integer without a cast"
an der Stelle erg=15

von Gast (Gast)


Lesenswert?

Du übergibst das Objekt "test" und nicht die Referenz darauf.

Es sollte also
1
error=irgendwas(&test);

sein.

von gast (Gast)


Lesenswert?

ja, sry, das hab ich schon so gemacht, die warnung kommt ja bei erg=15
1
uint8_t irgendwas(uint8_t *erg){
2
 erg=15;
3
 return 1;
4
}
5
...
6
uint_8 test=0;
7
uint_8 error=0;
8
error=irgendwas(&test);

von P. S. (Gast)


Lesenswert?

Und natuerlich *erg = 15. Bitte nochmal das Kapitel ueber Pointer lesen.

von gast (Gast)


Lesenswert?

thx werd ich machen ^^

von Stefan K. (_sk_)


Lesenswert?

Wenn Du die Namensgebung etwas änderst:
1
uint8_t irgendwas(uint8_t *erg_ptr){
2
 *erg_ptr = 15;
3
 return 1;
4
}
5
6
...
7
uint_8 test=0;
8
uint_8 error=0;
9
error=irgendwas(&test);
dann wird Dir vielleicht besser klar, was in Deinem Code passier.

Viele Grüße, Stefan

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.