2014-09-27 5 views
5

Я пишу программу потоков, а метод pthread_create требует функции void *.C - управление достигает конца не-void функции

Я получаю предупреждение «контроль до конца не-недействительной функции», и я понимаю, почему (потому что у меня нет официального заявления о возврате) - мой вопрос действительно является тем, что я должен вернуть в этом случае ?

Можно ли просто вернуть NULL? Я не думаю, что моя возвращаемая стоимость повлияет на что-либо еще в моей программе, но мне просто интересно, что такое стандарт, чтобы избежать этого предупреждения при программировании с помощью многопоточных программ.

+1

pthread_exit (NULL); в конце вашей функции потока должно быть –

ответ

5

Возврат NULL в порядке, и это обычный способ. Ничто не будет использовать возвращаемое значение, если вы не написали код для его использования. NULL является допустимым значением для void *, и если вам все равно, что это за значение, то единственное, что имеет значение, это то, что оно действительно.

1

попробовать что-то вроде этого:

#include <pthread.h> 

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

надежду, что помогает вам.

+0

Я заметил, что использование перекрестных компиляторов win32 и win64, i686-w64-mingw32-gcc и x86_64-w64-mingw32-gcc - это предупреждение компилятора сохраняется даже при вызове pthread_exit (NULL) , Я не получил предупреждение для gcc под собственным linux или кросс-компилятором (arm-linux-gnueabihf-gcc-4.8) – bph