C函数指针无效值问题

时间:2015-10-30 04:55:41

标签: c operating-system function-pointers

我一直在为一个操作系统类的工作分配(所以请,只提示,没有完整的答案),以及一个函数,其参数和返回类型由我的教师提供,但是我的内容是由我填充的一个错误。功能如下:

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, '\0', 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,尤其是函数指针的想法,但我的所有研究都表示这段代码不应该抛出错误,但它不断抛出以下内容:

  

错误:无法忽略void值,因为它应该是

1 个答案:

答案 0 :(得分:2)

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

需要

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

我会让你弄清楚为什么这些改变是有道理的。

如果它们没有意义,请添加评论。