2014-09-27 3 views
5

Ich schreibe ein Threading-Programm, und die pthread_create Methode benötigt eine void * -Funktion.C - Kontrolle erreicht Ende der nicht-void Funktion

Ich bekomme die "Kontrolle erreicht Ende der nicht-void-Funktion" Warnung, und ich verstehe warum (weil ich keine offizielle Rücksendeaussage habe) - meine Frage ist wirklich nur, was ich in diesem Fall zurückgeben sollte ?

Ist es in Ordnung, nur NULL zurückzugeben? Ich glaube nicht, dass sich mein Rückgabewert auf irgendetwas anderes in meinem Programm auswirkt, aber ich frage mich nur, was der Standard ist, um diese Warnung zu vermeiden, wenn mit Multithread-Programmen programmiert wird.

+1

pthread_exit (NULL); am Ende der Thread-Funktion sollte –

Antwort

5

Zurückgeben NULL ist in Ordnung, und ist der normale Weg. Nichts verwendet den Rückgabewert, es sei denn, Sie schreiben Code, um ihn zu verwenden. NULL ist ein gültiger Wert für void *, und wenn Sie nicht interessiert, was dieser Wert ist, dann ist das einzige, was zählt, dass es eine gültige ist.

1

versuchen, etwas wie folgt aus:

#include <pthread.h> 

void* you_func(void* param) { 
    // do stuff here ... 
    // and terminates as follows: 
    pthread_exit(NULL); 
} 

Hoffnung, das Ihnen hilft.

+0

Ich habe festgestellt, dass mit den Win32 und Win64 Cross-Compiler, i686-w64-mingw32-gcc und x86_64-w64-mingw32-gcc - diese Compiler-Warnung besteht auch bei dem Aufruf von pthread_exit (NULL) . Ich habe die Warnung für gcc unter nativem Linux oder dem Arm-Cross-Compiler nicht erhalten (arm-linux-gnueabihf-gcc-4.8) – bph

Verwandte Themen