Funktion einen Funktionspointer...
-
ach, ich kanns nicht erklären
void abc(void *r,void (*callback)(void*,void*,size_t),size_t level){ callback(r,callback,level); }
so, und in
void (*callback)(void*,void*,size_t)
müsste jetzt damit ich keinen fehler bekomm, das zweite argument vom typ callback sein. wie bring ich das hin?
-
callback ist kein Typ.
Edit: ah, ok. Moment.
-
-
Geht wohl nicht. http://www.gotw.ca/gotw/057.htm
-
cooky451 schrieb:
Geht wohl nicht.
geht nicht, gibts nicht! so kompilierts aber ich fand es hässlich, dachte da gibts nen kniff. wenn einem einer einfällt, ich bin für jeden vorschlag dankbar
void abc(void *r,void (*callback)(void*,void (*callback)(void*,void*,size_t),size_t),size_t level){ callback(r,(void (*)(void*,void*,size_t))callback,level); }
-
Mach dir doch die Sache mit einem typedef etwas übersichtlicher:
typedef void(*MyCb)(void*,void*,size_t); void abc(void *r,MyCb callback,size_t level) { callback(r,callback,level); } ... void cb(void* v1,void* v2,size_t s) {} ... abc(/*void**/,cb,/*size_t*/);
Ungetestet, sollte aber funktionieren.
-
@_--
Was ich mit geht nicht meinte war, dass du den Typen nicht angeben kannst. Zudem wäre meine Wahl jetzt auch void (*) (), aber na ja so geht's auch.@typedefer
Du hast den Cast vergessen.