【发布时间】:2018-04-23 08:50:59
【问题描述】:
我有一个函数void startScanner(...) 以两个函数指针作为参数:userType *vConfig(void) 和void * vCallback(void)。在这个函数中,我想创建一个线程并在创建的函数线程中调用vCallback() 函数。所以我决定将 vCallback 作为参数传递给 pthreadcreate。
startScanner 函数代码:
void startScanner(tUsrStatus (*vConfig)(), void* (vCallback)()){
if(pthread_create(&scannerThread, NULL, scannerThreadFunc, vCallback))
{
printf("Thread creation fails!\n");
}
}
scannerTread 函数:
static void *scannerThreadFunc(void *arg()){
void *funcptr(void) = arg;
while(1)
{
funcptr();
}
pthread_exit(NULL);
}
我收到以下错误:
error: function ‘funcptr’ is initialized like a variable
error: nested function ‘funcptr’ declared but never defined
我该如何解决这个问题?
【问题讨论】:
-
你看到你在第一个 sn-p 中的第二个参数和你在第二个 sn-p 中的
funcptrdecl 之间有什么区别吗?嗯....(提示:请重新检查arg的语法)。我几乎可以肯定所有这些案例都应该是void *(*varname)(void)。也就是说,如果您传递的函数地址 (a) 返回void*,并且 (b) 不接受任何参数。
标签: c linux pthreads function-pointers