Problem mit Funktionspointer

Gast #1788780
Lesenswert?

Ich bekomme folgende Fehlermeldung.

Error[Pe167]: argument of type "void *" is incompatible with parameter 
of type "void (void) *"

Ich habe eine Funktion die ist wie folgt deklariert.

BYTE Timertestfunktion(void* CallBkFuntion, DWORD TimeOut)

in dieser Funktion wird eine 2. Funktion aufgerufen.

Bibfunktion(&TIDMsgRespTimer, CallBkFuntion, TimeOut);

Bei der Bibfunktion (CallBkFuntion) taucht dann auch die Fehlermeldung 
auf.

Die Übergabewerte kann ich bei beiden Funktionen nicht ändern.
Weiß jemand wie ich dieses Problem in den Griff bekommen könnte?

Gruß
#1788788
Lesenswert?

Micha schrieb:

> Die Übergabewerte kann ich bei beiden Funktionen nicht ändern.

Solltest du aber.

Pointer zurechtzucasten ist meistens ein sehr sicheres Indiz, dass 
irgendetwas nicht stimmt. Und einen void* in einen Funktionspointer 
casten zu müssen, ist ganz besonders übel.

Das hier
1
BYTE Timertestfunktion(void* CallBkFuntion, DWORD TimeOut)

sollte eigentlich so aussehen
1
BYTE Timertestfunktion(void (*CallBkFuntion)(void), DWORD TimeOut)
Moderator Persönliche Seite #1788804
Lesenswert?

Karl heinz Buchegger schrieb:
> Und einen void* in einen Funktionspointer
> casten zu müssen, ist ganz besonders übel.

Genauer gesagt: das ist vom C-Standard nicht gedeckt.  Man darf einen
Zeiger auf ein Objekt in einen Zeiger vom Typ void* casten und dann
zurück auf den Objektzeiger, aber Funktionszeiger darf man nur auf
andere Funktionszeiger casten, nicht auf Objektzeiger (und umgekehrt).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren