C函数指针无效值问题

C Function Pointer void value issue

我一直在为一个操作系统 class 做作业(所以拜托,只有提示,没有完整的答案),以及一个函数,其参数和 return 类型由我提供讲师但内容由我填写的人正在抛出错误。函数如下:

void start_thread(void (*function)(void))
{
    TCB_t* stackPointer = malloc(8192); //8192 is a provided value for assignment
    TCB_t tcb;
    tcb = init_TCB(&tcb, function, stack, sizeof(stack));
    AddQueue(RunQ, tcb);
}

以下函数来自引发错误的行,此函数是为赋值定义的,不应更改。

void init_TCB (TCB_t *tcb, void *function, void *stackP, int stack_size)
{
     memset(tcb, '[=11=]', sizeof(TCB_t));
     getcontext(&tcb->context);
     tcb->context.uc_stack.ss_sp = stackP;
     tcb->context.uc_stack.ss_size = stack_size;
     makecontext(&tcb->context, function, 0);
}

我不熟悉 C,尤其是函数指针的概念,但我的所有研究表明这段代码不应该抛出错误,但它不断抛出以下内容:

error: void value not ignored as it ought to be

tcb = init_TCB(&tcb, function, stack, sizeof(stack));

需要

init_TCB(&tcb, function, stackPointer, 8192);

我会让您弄清楚为什么这些更改有意义。

如果他们不明白,请添加评论。