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);
我会让您弄清楚为什么这些更改有意义。
如果他们不明白,请添加评论。
我一直在为一个操作系统 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);
我会让您弄清楚为什么这些更改有意义。
如果他们不明白,请添加评论。