0

我是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”

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

谢谢

4

1 回答 1

2

请报告您粘贴到问题中的确切代码发生错误的行号。

问题出现在这里:

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

Avoid *不是结构。您需要将其转换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 个),而且逗号后面有空格通常看起来更好。

于 2013-11-09T03:22:59.943 回答