指针在makecontext函数中的澄清

时间:2011-10-23 16:10:49

标签: c linux unix

我一直在实现用户线程库作为我的任务的一部分。 我不理解makecontext函数:

makecontext(&(mainthread->threadctx),(void(*)(void))start_funct,1,args)

(void(*)(void))start_funct究竟是什么意思?为什么我必须这样写呢? 我不能把它写成

makecontext(&(mainthread->threadctx),start_funct,1,args) ?

请耐心等待我,我还不熟悉指针:)

1 个答案:

答案 0 :(得分:1)

void(*)(void)表示“指向不带参数的函数的指针并返回void”。

因此(void(*)(void))start_funct正在向上述类型转换start_funct(我们可以假设它是某种函数指针)。 (有一个very useful online tool可以帮助你解决这个问题,直到你更容易阅读声明。)

您必须这样写,因为start_funct的签名不是void start_funct(void),因此需要进行投射。