000
20.01.2004, 11:14 Uhr
~Klemo
Gast
|
Hallo zusammen,
folgendes Problem (vereinfacht):
es gibt mehrere Funktionen foglenden Typs: void <Funktionsname> (int <parameter>);
zusätzlich einen Fkts.zeiger der auf eine der obigen Fkt. gesetzt werden kann: void (*zeiger) (int) = <Funktionsname_x>;
dieser Zeiger soll nun einer Funktion als Parameter übergeben werden, die einen Zeiger auf void * erwartet: void func (int i, void * pointer);
also: ... func(0, (void *)zeiger);
der cast des Funktionszeigers auf einen void-Pointer führt aber zu einem Compilerfehler.
Und das ist mein Problem: ist der Code nicht zulässig oder ist der Compiler falsch?
Auszug aus K&R-C: jedes Objekt kann auf einen void-Zeiger (void *) gecastet werden, ohne das Information verloren geht.
Muss das heissen "...jedes Objekt, ausser Funktionszeiger..."
bin dankbar für jede Anregung Klemo
P.S: ich weiss selbst das man void * nicht verwenden soll, aber die Funtkion hat nun mal diese API und daran kann ich nichts drehen! Dieser Post wurde am 20.01.2004 um 11:39 Uhr von Pablo editiert. |