我是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'
错误:在非结构或联合的情况下请求成员'b'
ENVIR。 :Windows7 C:B mingw32-gcc.exe
由于
答案 0 :(得分:1)
请报告您粘贴到问题中的确切代码发生错误的行号。
问题出现在这里:
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个),通常用逗号后的空格看起来更好。