多线程报错invalid conversion from ‘void* (*)(void*)’ to 'void* (*)(void*)' [-fpermissive]的原因
时间: 2023-11-22 07:05:11 浏览: 199
这个错误通常是由于函数指针类型不匹配导致的。
在多线程编程中,线程函数的类型必须是void* (*)(void*),即返回值为void*,参数为void*的函数指针类型。如果你的函数指针类型不匹配,就会出现上述错误。
例如,如果你的线程函数的类型是void (*)(int),即返回值为void,参数为int的函数指针类型,那么在创建线程时就会出现上述错误。
解决方法是确保你的线程函数的类型与要求的类型匹配。如果你的线程函数的类型不匹配,可以使用强制类型转换来转换函数指针类型。但是要注意,这样做可能会导致不可预知的行为,因此请谨慎使用。
相关问题
(UINT)(void*)(DWORD)
引用\[1\]和\[2\]提到了编译错误的问题,其中涉及到了函数指针的类型转换错误。引用\[3\]中给出了一个线程函数的定义和调用的示例。根据这些信息,我可以推断出你的问题是关于类型转换的。
在C++中,将一个指针转换为另一种类型的指针时,需要确保转换是合法的。在你提供的代码中,出现了无效的类型转换错误。
对于你提供的问题"(UINT)(void*)(DWORD)",我无法直接回答,因为这只是一个类型转换的表达式,缺少上下文。如果你能提供更多的代码或者具体的问题,我将能够给出更准确的答案。
#### 引用[.reference_title]
- *1* [error C2664: “gluNurbsCallback”: 不能将参数 3 从“void (__stdcall *)(GLenum)”转换为“void (__...](https://blog.csdn.net/csp123258/article/details/80221301)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [c++创建线程的常见问题:error: invalid conversion from 'void*' to 'void* (*)(void*)'](https://blog.csdn.net/weixin_29470893/article/details/117204437)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文