を構造を通過する間に、私は私が私が渡された構造体thisdot
を作成main()
からthreads
C - エラーここ
void *find_z(void *thisdot)
{
long z;
struct dotData *data;
*data = *((struct dotData*)(thisdot));
z = data.x + data.y;
printf("Here's our dot! %ld * %ld = %ld \n", data.x, data.y, z);
pthread_exit(NULL);
}
倍数に渡すしようstruct
struct dotData{
long x;
long y;
};
を持っていますx
とy
が変更されるたびにfind_z
への引数として返されます。
int main()
{
.
.
.
struct dotData thisdot;
int NUM_THREADS;
NUM_THREADS = N*M;
pthread_t threads[NUM_THREADS];
int i, j;
for(i = 0; i < M; i++){
for (j = 0; j < N; j++) {
thisdot.x = x_dotBegin + x_interval*j;
thisdot.y = y_dotBegin + y_interval*i;
pthread_create(&threads[NUM_THREADS], NULL, find_z, &thisdot);
}
}
pthread_exit(NULL);
}
しかし、コンパイル時に私はどのように私が正しくスレッドに、この構造体を渡すんz = data.x + data.y;
error: request for member ‘x’ in something not a structure or union|
error: request for member ‘y’ in something not a structure or union|
でエラーが出ますか?
'data-> x'と' data-> y'ですが、 '* data = ... 'で未定義の振る舞いを持っています –
コンパイラは問題の内容を正確に伝えます。データは構造体ではなく、共用体ではありません。データはポインタです。それはポインタのように扱います。 – Gerhardh