在我们的代码中,有一个函数定义为:
A.h
extern int (*get_prof_action(void))(void);
A.c
static int (*ProfAction)(void) = NULL;
int (*get_prof_action(void))(void)
{
return ProfAction;
}
稍后在main.c中,我想通过dlsym获得这个函数(我必须这样做),所以我这样使用.
...
int (*p_get_prof_action(void))(void);
...
void my_function(){
...
void *handle=dlopen(mylibrary,RTLD_LAZY);
p_get_prof_action = (int (*(void))(void)) dlsym(handle,"get_prof_action");
...
}
我得到了编译错误:
error: cast specifies function type at line
(int (*(void))(void)) dlsym(handle,"get_prof_action");
=======================================================
以下是我的问题:
-
这不是我的代码,我从来没有见过这样的用法来定义函数.你能告诉我这是什么吗?
-
我如何正确地获得这个p_get_prof_action?
非常感谢.这真的让我很难受!