我有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中定义的回调函数的正确方法
提前致谢
答案 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 );