【发布时间】:2011-06-27 09:34:16
【问题描述】:
#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 给我错误:
错误 C2664:“CreateThread”:无法将参数 3 从“void (void *)”转换为“unsigned long (__stdcall *)(void *)” 范围内具有此名称的函数都不匹配目标类型 执行 cl.exe 时出错。
【问题讨论】:
-
你能把
Thread1的声明改成unsigned long __stdcall Thread1(LPVOID param)吗? (并返回一个整数?) -
是的,我改变了它,我得到了结果:但是为什么我在一开始就需要 unsigned long 或 DWORD 这种情况:当我声明它时,函数仍然给出错误“ void WINAPI Thread1( LPVOID参数)"
标签: visual-studio multithreading createthread