将函数指针分配给变量

时间:2015-10-22 19:43:22

标签: c

我有2个文件file1.c file2.c。我需要在大小为2的结构数组中存储从file1.c传递到file2.c的函数指针。

file1.c

main ()
{
   setFuncPointer ( 1, &call_to_routine_1 );
   setFuncPointer ( 2, &call_to_routine_2 );

void call_to_routine_1 ()
{
  // Do something
}
void call_to_routine_2()
{
  // Do something
}
}

file2.c

struct store_func
{
  UINT32 Id;
  void *fn_ptr;
} func[2];

void setFuncPointer( UINT32 id, void(*cal_fun)())
{
   func[0].id = id;
   /* How to assign the cal_fun to the local fn_ptr and use that later in the code */
}

另外,我不确定在结构中声明void指针。请建议使用file2.c中定义和使用file1.c中定义的回调函数的正确方法

提前致谢

1 个答案:

答案 0 :(得分:3)

在你的结构内部,这个:

void *fn_ptr;

应该定义为:

void (*fn_ptr)(void);

setFuncPointer应定义为:

void setFuncPointer( UINT32 id, void(*cal_fun)(void))

然后在setFuncPointer中,你可以这样做:

func[0].fn_ptr = cal_fun;

稍后,您可以像这样调用函数:

func[0].fn_ptr();

此外,只需拨打setFuncPointer即可:

setFuncPointer ( 1, call_to_routine_1 );
setFuncPointer ( 2, call_to_routine_2 );