将结构从pthread_create传递到函数中

将结构从pthread_create传递到函数中,c,pthreads,C,Pthreads,我是C语言的新手,有人能帮我吗 #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <windows.h> struct New { char a; int b; }; void *Print_Func (void* Ptr) { Sleep(5); printf("%d\n",Ptr.a); printf("%d\n",Ptr.b); } in

我是C语言的新手,有人能帮我吗

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <windows.h>

struct New
{
 char a;
 int b;
};


void *Print_Func (void* Ptr)
{
 Sleep(5);
 printf("%d\n",Ptr.a);
 printf("%d\n",Ptr.b);
}

int main (void)
{
 pthread_t Thread1;
 while(1)
 {
  struct New Flag;
  Flag.a=5;
  Flag.b=1234567;
  pthread_create(&Thread1,NULL,Print_Func,&Flag);
  pthread_join(Thread1,NULL);
  printf("\n");
 }
 system("pause>nul");
}
#包括
#包括
#包括
#包括
结构新
{
字符a;
int b;
};
作废*打印功能(作废*打印)
{
睡眠(5);
printf(“%d\n”,Ptr.a);
printf(“%d\n”,Ptr.b);
}
内部主(空)
{
pthread_t Thread1;
而(1)
{
结构新标志;
标志a=5;
Flag.b=1234567;
pthread_create(&Thread1,NULL,Print_Func,&Flag);
pthread_join(Thread1,NULL);
printf(“\n”);
}
系统(“暂停>nul”);
}
为什么编译器总是报告

错误:请求非结构或联合中的成员“a”

错误:请求非结构或联合中的成员“b”

环境:Windows7 C:B mingw32-gcc.exe


谢谢

请报告出现错误的行号,以获得粘贴到问题中的确切代码

问题出现在这里:

void *Print_Func (void* Ptr)
{
 Sleep(5);
 printf("%d\n",Ptr.a);
 printf("%d\n",Ptr.b);
}
void*
不是一个结构。您需要将
void*
转换为
struct New*

void *Print_Func (void *Ptr)
{
    struct New *data = Ptr;
    Sleep(5);
    printf("%d\n", data->a);
    printf("%d\n", data->b);
}

它也值得缩进一个以上的空格(最好是4),通常在逗号后加空格更好。

欢迎使用堆栈溢出。请尽快阅读这一页。请注意,将相同的变量Flag传递给
pthread\u create()
是可以的,因为您不更改线程之间的值,线程也不修改它。通常情况下,您需要向每个线程传递一个单独的值,因为每个线程要执行的任务稍有不同,参数会告诉它区别。太好了,非常感谢:-)