了解程序的行为

时间:2019-03-02 17:09:59

标签: c

我正在运行以下程序:

#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’

如何在不引发错误的情况下传递带有给定参数的函数?

1 个答案:

答案 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);