gpt4 book ai didi

c - 如何接收 (void *)0x12345678 参数?

转载 作者:行者123 更新时间:2023-11-30 16:19:28 26 4
gpt4 key购买 nike

在test.c中(用户级别)

tid = thread_create(thread, (void *)0x12345678, stack);

我想接收上述thread_create函数的参数。所以,我在sysproc.c(内核级)中编写了代码

if(argptr(0, (void*)&function, sizeof(*function)) ||
argptr(1, (void*)&arg, sizeof(*arg)) ||
argptr(2, (void*)&stack, sizeof(*stack)))
return -1;

但是,只有第二行导致了错误。我怎样才能改变这部分的代码?

argptr(1, (void*)&arg, sizeof(*arg))

我正在xv6操作系统上工作,原始定义的函数是

int thread_create(void *(*function)(void*), void *arg, void *stack);

并且 test.c 无法更改。

最佳答案

我们没有看到 arg 的声明,但似乎是 void* arg ,所以,你的代码应该是:

argptr(1, (void*)&arg, sizeof(arg))

我不是语言律师,所以我不知道是 sizeof(void)从语言标准的角度来看是有效的,但我使用的大多数 C 编译器给出 1为了它。 C++ 编译器通常会报告错误。无论如何,这里不是你想要的,你想要的sizeof(void*)

关于c - 如何接收 (void *)0x12345678 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55621175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com