Probleme mit pthread_exit und float !
-
Hallo,
ich schaff es einfach nicht einen Thread als exit Wert ein float zurückgeben zu lassen. Hab ein kleines Beispielprogramm geschrieben um mein Problem zu erläutern. Ich bekomm folgende Compiler Meldung: "test.c:10: error: cannot convert to a pointer type" . Nehm ich statt float einen int Wert geht alles ohne Probleme. Aber wieso nur ???#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <pthread.h> void thread_func1 (void *arg) { float wert=3.2; pthread_exit ((void *) wert); } int main (void) { pthread_t thread1; float return1; int liste[5]; if(pthread_create(&thread1, NULL, &thread_func1, (void *)liste) != 0) { fprintf (stderr, "Fehler bei Thread ...\n"); exit (EXIT_FAILURE); } pthread_join(thread1, &return1); printf("\nRueckgabe: %f\n", return1); return EXIT_SUCCESS; }
-
~Cassis schrieb:
void thread_func1 (void *arg) {
float wert=3.2;
pthread_exit ((voidwert);
}
[/cpp]du meinst wahrscheinlich
[b]void*[/b] thread_func1 (void *arg) { float wert=3.2; pthread_exit ((void *) [b]&[/b]wert); }
es ist aber keine gute idee einen zeiger auf eine lokale
variable zurueckzugeben.
-
Aber wieso geht es mit int (auch ohne dem Sternchen vor der Funktion) ?? Das versteh ich einfach nicht.
-
das ist vermutlich einfach Zufall, dass du die int-Variable noch ansprechen kannst. Es ist aber in beiden Fällen undefined behaviour.