gpt4 book ai didi

c - 将结构从 pthread_create 传递到函数中

转载 作者:行者123 更新时间:2023-11-30 15:43:23 25 4
gpt4 key购买 nike

我是 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");
}

为什么编译器总是报告

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

错误:请求非结构或 union 中的成员“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);
}

还值得缩进一个以上的空格(SO 上最好缩进 4 个空格),而且逗号后面有空格通常看起来更好。

关于c - 将结构从 pthread_create 传递到函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19871962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com