1
#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 时出错.

4

1 回答 1

3

定义如下

DWORD WINAPI MyThreadProc(LPVOID lpParameter)

CreateThread() 需要 __stdcall 调用约定。

于 2011-06-27T01:34:16.097 回答