作为我的任务的一部分,我已经实现了一个用户线程库。我不理解makecontext函数:
makecontext(&(mainthread->threadctx),(void(*)(void))start_funct,1,args)(void(*)(void))start_funct到底是什么意思?为什么我要这样写呢?我不能把它写成
makecontext(&(mainthread->threadctx),start_funct,1,args) ?请耐心等待,我还不习惯使用指针:)
发布于 2011-10-24 00:41:24
void(*)(void)的意思是“指向不带参数并返回void的函数的指针”。
因此,(void(*)(void))start_funct将start_funct (我们可以假定它是某种函数指针)`转换为上述类型。(有一个very useful online tool可以帮助您完成这项工作,直到您获得更舒适的阅读声明)。
你必须这样写,因为start_funct的签名不是void start_funct(void),所以需要强制转换。
https://stackoverflow.com/questions/7867338
复制相似问题