将结构从pthread_create传递到函数中
我是C语言的新手,有人能帮我吗将结构从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
#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()
是可以的,因为您不更改线程之间的值,线程也不修改它。通常情况下,您需要向每个线程传递一个单独的值,因为每个线程要执行的任务稍有不同,参数会告诉它区别。太好了,非常感谢:-)