具有泛型参数类型的函数指针

时间:2014-12-11 16:14:50

标签: c pointers function-pointers

为了知识,我想知道这样的事情是否可能:

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;

是否有创建具有泛型类型参数的函数指针?

2 个答案:

答案 0 :(得分:2)

你走在正确的轨道上。但是,为了实现你想要的,你的函数应该有一个void *参数并将其内部转换为int或double。

答案 1 :(得分:-1)

没有。无论如何,你需要if ... else才能正确使用这样的东西,所以只需存储单独的函数指针并在每段代码中使用正确的指针。