Aar*_*onP 0 c++ multithreading beginthread beginthreadex
#include <iostream>
#include <Windows.h>
#include <process.h>
//#include "windowstate.cpp"
//DWORD WINAPI MyThreadFunction( LPVOID lpParam );
using namespace std;
int Zeit;
unsigned int __stdcall wfshutdown() {
Sleep(Zeit*60000);
system("shutdown -s -t 2");
return 0;
}
void shutdown() {
cout << "When I should shut down your PC(in minutes)" << endl;
cin >> Zeit;
if(Zeit==0) {
return;
}
// windowstate(0);
HANDLE hThread;
DWORD threadID;
hThread = (HANDLE)_beginthreadex( NULL, 0, &wfshutdown, NULL, 0, &threadID );
}
Run Code Online (Sandbox Code Playgroud)
我无法运行该程序.我收到此错误,我不明白:
错误1错误C2664:'_ beginthreadex':无法将参数3从'unsigned int(__stdcall*)(void)'转换为'unsigned int(__stdcall*)(void*)'32
我在网上搜索了一个多小时未成功找到解决方案,因此我非常希望你能提供帮助.
你的线程函数应该接收一个void*参数:
unsigned int __stdcall wfshutdown(void *) {
Sleep(Zeit*60000);
system("shutdown -s -t 2");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
遇到这种情况时,请尝试分析编译器输出.在这种情况下,它指示_beginthreadex的第三个参数应该是a unsigned int (__stdcall *)(void *),但是您使用的是类型的参数unsigned int (_stdcall *)(void).
因此,显而易见的是,预期和使用的内容之间的区别在于void*论证.
| 归档时间: |
|
| 查看次数: |
1666 次 |
| 最近记录: |