Hallo,
ich möchte eine Funktion deklarieren (oder am besten als typedef), die
als Argumente eine Integer und einen Funktionszeiger auf genau so eine
Funktion, wie sie selbst eine ist, akzeptiert.
Wenn ich schreibe
1
typedefintFunc_t(int,Func_t*);
geht das ja nicht, weil der Typ Func_t noch nicht bekannt ist.
Aber so geht's auch nicht:
1
typedefintFunc_t(int,int(*)());
2
3
testfunc(inti,Func_t*f){
4
return0;
5
}
6
Func_t*funcptr=testfunc;
Hier meckert der Compiler natürlich, dass *funcptr und testfunc nicht
vom selben Pointer Typ sind.
Ich müsste casten:
1
Func_t*funcptr=(Func_t*)testfunc;
Kann man denn einen Typ basteln, der als (zweites) Argument einen Zeiger
auf den eigenen Typ nimmt?
Tom schrieb:> "Das Problem in ein> struct stecken, schon funktioniert es".
Danke!
Das funktioniert, denn da erscheint das zweite "struct Foo" in einem
anderen Block, wo es schon bekannt ist.
nocheinGast schrieb:> Also in C kann man sowas doch mit dem Präprozessor zusammenbauen
Hm, ich glaube nicht, denn auch der Präprozessor muss ja Code
generieren, den der Compiler als gültig ansieht.
nocheinGast schrieb:> int f(char a, int b, int (*c)(char a, int b)) {> return c(a, b);> }
Auch hier ist ja *c nicht vom selben Typ wie f.