为了知识,我想知道这样的事情是否可能:
2功能:
static int func1(int *a, int b){
...
}
static int func2(double *a, int b){
...
}
我想声明一个函数指针并将其指向其中一个函数。然而,这些函数的参数是不同类型的。所以我试过了:
static int (*func_ptr)(void *arg1, int arg2);
static void *Argument1;
static int Argument2=5;
int main(){
double arg1_d;;
int arg1_i;
...
if(want_func2){
Argument1=(double *) &arg1_d;
func_ptr=func2;
run(func_ptr);
}
else{
Argument1=(int *) &arg1_i;
func_ptr=func1;
run(func_ptr);
}
return 0;
}
static int run(int *(function)(void *,int )){
function(Argument1,Argument2);
}
然而,在编译时我收到警告:
warning: assignment from incompatible pointer type
何时
func_ptr=func2;
func_ptr=func1;
是否有创建具有泛型类型参数的函数指针?
答案 0 :(得分:2)
你走在正确的轨道上。但是,为了实现你想要的,你的函数应该有一个void *参数并将其内部转换为int或double。
答案 1 :(得分:-1)
没有。无论如何,你需要if
... else
才能正确使用这样的东西,所以只需存储单独的函数指针并在每段代码中使用正确的指针。