前提・実現したいこと
Visual Studio Codeで,pthreadを用いたいのですが,コンパイルした時に以下のようなエラーメッセージが出てしまいます.どのようのにしたら,コンパイルできるようになりますか.
パソコンはWindows10を使ってます.
発生している問題・エラーメッセージ
In file included from c:\mingw\include\pthread.h:288:0, from 5-1.c:4: c:\mingw\include\sched.h:152:47: error: unknown type name 'pid_t' PTW32_DLLPORT int __cdecl sched_setscheduler (pid_t pid, int policy); ^~~~~ c:\mingw\include\sched.h:154:47: error: unknown type name 'pid_t' PTW32_DLLPORT int __cdecl sched_getscheduler (pid_t pid); In file included from 5-1.c:4:0: c:\mingw\include\pthread.h:307:8: error: redefinition of 'struct timespec' struct timespec { ^~~~~~~~ In file included from c:\mingw\include\pthread.h:218:0, from 5-1.c:4:
該当のソースコード
C
1#include <stdio.h> 2#include <windows.h> 3#define sleep(n) Sleep(n * 1000) 4#include <pthread.h> 5 6void *func(void *arg){ 7 //double型のポインタを復元 8 double *pd = (double *)arg; 9 10 sleep(5); 11 *pd = *pd + 0.1; 12 13 printf("func done.\n"); 14 return NULL; 15} 16 17int main(){ 18 double a; 19 20 while(1){ 21 printf("input the number\n"); 22 printf("a = "); 23 scanf("%lf",&a); 24 25 if(a == -1){ 26 break; 27 } 28 else{ 29 pthread_t newthread; 30 31 //double aをdouble*のポインタで渡す 32 int ret = pthread_create(&newthread, NULL, func, &a); 33 if (ret == 0){ 34 pthread_join(newthread, NULL); 35 } 36 printf("%lf\n", a); 37 } 38 } 39 40 return 0; 41}
回答1件
あなたの回答
tips
プレビュー