Hier vorbei Struktur habe ich ein struct
C - Fehler beim auf Threads
struct dotData{
long x;
long y;
};
die ich versuche threads
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);
}
Von main()
mehr zu passieren, wo ich eine Struktur thisdot
erstellen, die übergeben wird als ein Argument zu find_z
jedes Mal, wenn seine Elemente x
und y
geändert werden
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);
}
während der Kompilierung jedoch bekomme ich einen Fehler in 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|
Wie kann ich diese Struktur korrekt auf Threads passieren?
'data-> x' und' data-> y' aber Sie haben undefiniertes Verhalten mit '* data = ...' –
Der Compiler sagt Ihnen genau, was das Problem ist. Daten sind keine Struktur und keine Union. Daten sind ein Zeiger. Handle es wie ein Zeiger. – Gerhardh