www.mikrocontroller.net

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


Autor: ape (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie ist denn der Prototyp von fdevopen?

Gruß,
Patrick...

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: ape (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (Gast)
Datum:

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

Autor: Marian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

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.