TechInfo wrote:
> void* CallBackRef;
> XUartLite_Handler (*Callback)(void);
Ein XUartLiteHandler ist bereits ein Funktionspointer.
Daher denke ich, dass es heissen müsste:
XUartLite_Handler Callback;
So wie du das jetzt hast, definierst du Callback
als Pointer auf eine Funktion, die keine Argumente liefert
und einen XUartLite_Handler zurückliefert.
> Callback=RecvCallback;
> XUartLite_SetRecvHandler (&UartLite, *Callback, CallBackRef);
>
Dein Code Schnipsel ist sehr kurz, sodass ich die
Absicht dahinter nicht zweifelsfrei erkennen kann.
> warning: passing arg 2 of `XUartLite_SetRecvHandler' from incompatible
> pointer type
Ja. das ist klar.
XUartLite_SetRecvHandler möchte einen Pointer auf eine
XUartLite_Handler Funktion. Du gibst ihr aber einen Pointer
auf eine Funktion die so einen XUartLite_Handler liefern könnte.
Den * in
XUartLite_SetRecvHandler (&UartLite, *Callback, CallBackRef);
wird der Compiler wohl ignorieren, da er hier keinen Sinn
ergibt. Einen Funktionspointer kann man so nicht dereferenzieren.
Das könnte man nur, indem man die Funktion tatsächlich aufruft.