2014-09-27 109 views
5

我正在寫一個線程程序的結束,並且在pthread_create方法需要一個void *函數。Ç - 控制到達非void函數

我得到了「控制達到的非void函數結束」的警告,我明白爲什麼(因爲我沒有任何官方return語句) - 我的問題其實只是我應該在這種情況下返回?

它是正常的,只是返回NULL?我不認爲我的返回值會影響我的程序中的其他任何內容,但我只是想知道在使用多線程程序進行編程時避免此警告的標準是什麼。

+1

pthread_exit(NULL);在你的線程函數應該做 – 2014-09-27 00:24:45

回答

5

返回NULL是好的,是正常的方式。除非您編寫代碼來使用它,否則將不會使用返回值。 NULLvoid *的有效值,如果您不在乎該值是什麼,那麼唯一重要的是它是有效的值。

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) 。我沒有在native linux或arm交叉編譯器(arm-linux-gnueabihf-gcc-4.8)下得到gcc的警告, – bph 2017-07-11 15:16:05

相關問題