#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
#include <string.h>
void Thread1(LPVOID param)
{
int a;
a = *((int *)param);
for (int i= 0; i <10; i++)
printf("%d\n", a);
}
int main()
{
int a =4;
int ThreadId;
CreateThread(0, 0x0100, Thread1, &a, 0, &ThreadId);
for(int i = 0; i <11; i++)
Sleep(1);
return(1);
}
這是一個簡單的代碼,但我無法弄清楚,爲什麼Visual Studio是給我的錯誤:的CreateThread()錯誤
錯誤C2664:「的CreateThread」:無法從「無效轉換參數3 (void *)'改爲'unsigned long(__stdcall *)(void *)' 這個名稱範圍內的函數都不匹配目標類型 執行cl.exe時出錯。
你可以改變'Thread1'的聲明爲'unsigned long __stdcall Thread1(LPVOID param)'嗎? (並返回一個整數?) –
是的,我改變了這一點,我得到的結果:但是爲什麼我需要unsigned long或DWORD在這種情況下開始:當我聲明它爲「void WINAPI Thread1(LPVOID param)「 –