亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我剛才查錯的時候把強制類型轉換去掉了,還是類似的錯誤。該怎么辦?

我剛才查錯的時候把強制類型轉換去掉了,還是類似的錯誤。該怎么辦?

HUX布斯 2022-07-15 12:11:39
大體是這樣的:在頭文件的類外添加線程函數聲明void ThreadFunc();在類內部添加protected型變量: HANDLE hThread;DWORD ThreadID;編寫線程函數在主函數中創建該線程hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFunction,NULL,0,&ThreadID);問題就是創建線程時出錯,cannot convert parameter 3 from 'void (void)' to 'unsigned long (__stdcall *)(void *)'錯誤的位置就在創建線程里的(LPTHREAD_START_ROUTINE)ThreadFunction上,還問高手這怎么回事啊????錯誤提示是'type cast' : cannot convert from '' to 'unsigned long (__stdcall *)(void *)'
查看完整描述

3 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

你可以參考下。
你要是調用 CreateThread 函數的話,那么線程過程函數不是隨便定義的。他要求一個標準的返回值
DWORD WINAPI ThreadFun(LPVOID para);
參數名和函數名你可以隨意,其他不要變。
你編譯器中返回的錯誤也說了,CreateThread的第三個參數的返回值不能是void,必須是一個 'unsigned long (__stdcall *) 并且參數是(void *) 的函數地址值。
看到這個錯誤提示后,你就應該照著提示區改就可以了。將你的函數聲明按照提示更改就一切ok了。
DWORD WINAPI 就是 unsigned long (__stdcall *) 的一個宏。

查看完整回答
反對 回復 2022-07-18
?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

DWORD WINAPI ThreadFunction( LPVOID p )
{
MessageBoxA( NULL, "", "這是子線程", 0 );
}
...
HANDLE hThread = CreateThread( NULL, 0, ThreadFunction, NULL,
NULL, NULL );
CloseHandle( hThread );

你的基礎還很薄弱,先從最基本的C、C++的語言本身學起。等掌握了C或者C++,再來學習Windows API。


查看完整回答
反對 回復 2022-07-18
?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

將強制類型轉換去掉就是了。這里參數傳遞的是線程的首地址。

查看完整回答
反對 回復 2022-07-18
  • 3 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號