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 に答える