我正在运行以下程序:
#include <unistd.h>
#include<time.h>
static void threadStart(void (*function)(void), void* arg) {
// schedules thread in Queue
function(void* arg);
}
编译器给我两个错误:
In function ‘threadStart’:
sample.c:5:11: error: expected expression before ‘void’
function(void* arg);
^
sample.c:5:11: error: too many arguments to function ‘function’
如何在不引发错误的情况下传递带有给定参数的函数?
答案 0 :(得分:1)
我已经开始写出答案了,我刚刚删除这表明您想要的答案:
static void threadStart(void (*function)(void*), void* arg) {
// schedules thread in Queue
function(arg);
}
但是随后我查看了您正在尝试使用的函数指针,该指针几乎类似于pthread_create
启动例程。
因此,没有一个名为threadStart
的函数既不会启动线程也不会成为线程的启动例程,这没有任何意义。我可能是错的,因为我们在您的代码中看不到其他任何提示如何threadStart
调用的内容。
所以我想知道这是否是您真正要在线程中运行的功能:
void* threadStart(void* arg)
{
someOtherCodeOrFunction(arg); // your code goes here
}
您打算实例化该线程以使用arg
作为参数值来运行上述功能:
pthread_create(&thread, NULL, threadStart, arg);