Forum: Compiler & IDEs incompatible pointer type bei fdevopen()


von ape (Gast)


Lesenswert?

Hallo
wahrscheinlich bin ich ma wieder der 237. der diese Frage stellt, aber
eine (nicht sehr ausführliche) Suche ergab nichts wirklich
hilfreiches.

ich definiere in meinem Quellcode die Funktion

int8_t spiPutByte(uint8_t byte) {
    // blub blub
}

und möchte die mit stdio verwenden.
diese zeile:

fdevopen(spiPutByte, NULL, 0);

funktioniert auch bringt aber die folgende Warnung:

main.c:24: warning: passing arg 1 of `fdevopen' from incompatible
pointer type

warum?

von OldBug (Gast)


Lesenswert?

Wie ist denn der Prototyp von fdevopen?

Gruß,
Patrick...

von Jörg Wunsch (Gast)


Lesenswert?

extern FILE
*fdevopen(int (*put)(char), int (*get)(void), int opts);

D. h. der Rückkehrwert der Funktion muß `int' sein (nicht int8_t,
auch
nicht uint8_t, int16_t oder sowas, einfach `int'), der Parameter ist
`char' (was übrigens nicht unsigned ist).

von ape (Gast)


Lesenswert?

aaah danke funktioniert.
diese **** pointer brechen mir immer wieder das genick
wobei ich an dieser stelle auch von selbst hätte drauf kommen können

von Jörg Wunsch (Gast)


Lesenswert?

...zumal in der Doku oben ein Beispiel für eine Ausgaberoutine drin
ist. ;-)

von Marian (Gast)


Lesenswert?

Hi Leute,

das Thema ist zwar schon ziemlich alt aber ich habe dieses Problem
jetzt auch. Ich möchte per Uart was versenden und nutze die
fdevopen-Fukntion. Mein AVR-Studio gibt die gleiche Fehlermeldung aus
wie bei ape. Da ich ja per Uart senden möchte, brauche ich ja char,
wie soll ich denn damit einen Integer zurückgeben?

von Karl H. (kbuchegg)


Lesenswert?

Schau doch mal in der Doku nach, was der Rueckgabewert
eigentlich macht. Das ist mit ziemlicher Sicherheit ein
Code ob die Funktion funktioniert hat oder nicht.

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.