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 に答える