2014-09-27 18 views
5

Piszę program do gwintowania, a metoda pthread_create wymaga funkcji void *.C - sterowanie osiąga koniec funkcji non void

Otrzymuję komunikat "Kontrola sięga po koniec funkcji nieważnej" i rozumiem dlaczego (ponieważ nie mam oficjalnego oświadczenia zwrotnego) - moje pytanie brzmi po prostu, co powinienem zwrócić w tym przypadku ?

Czy można po prostu zwrócić wartość NULL? Nie sądzę, że moja wartość zwracana wpłynie na wszystko inne w moim programie, ale zastanawiam się, jaki jest standard, aby uniknąć tego ostrzeżenia podczas programowania z programami wielowątkowymi.

+1

pthread_exit (NULL); na końcu wątku funkcja powinna zrobić –

Odpowiedz

5

Powracanie NULL jest w porządku i jest to normalny sposób. Nic nie użyje wartości zwracanej, dopóki nie napiszesz kodu, aby go użyć. NULL jest prawidłową wartością dla void *, a jeśli nie zależy ci na tym, jaka jest ta wartość, liczy się tylko to, że jest ważna.

1

spróbować czegoś takiego:

#include <pthread.h> 

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

nadzieję, że pomaga.

+0

Zauważyłem, że przy użyciu kompilatorów krzyżowych win32 i win64, i686-w64-mingw32-gcc i x86_64-w64-mingw32-gcc - ostrzeżenie o tym kompilatorze utrzymuje się nawet przy wywołaniu pthread_exit (NULL) . Nie otrzymałem ostrzeżenia dotyczącego gcc w natywnym systemie Linux ani w kompilatorze z uzgadnianiem ramienia (arm-linux-gnueabihf-gcc-4.8) – bph

Powiązane problemy