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 ((void 😉 wert);
    }
    [/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.


Anmelden zum Antworten