C语言 - 控制流到达非void函数的结尾

9
我正在编写一个多线程程序,而pthread_create方法要求一个void*函数。
我得到了"control reaches end of non-void function"警告,我理解为什么(因为我没有任何官方的返回语句) - 我的问题只是在这种情况下应该返回什么?
只返回NULL是否可以?我认为我的返回值不会影响程序中的其他内容,但我只是想知道在编写多线程程序时避免此警告的标准是什么。

2
在线程函数的结尾处加入pthread_exit(NULL);即可。 - L Lawliet
2个回答

9

返回NULL是可以的,而且是正常的方式。除非您编写使用返回值的代码,否则不会使用返回值。 NULLvoid *的有效值,如果您不关心该值是什么,则唯一重要的事情是它是一个有效值。


4

可以尝试类似以下的代码:

#include <pthread.h>

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

希望这能帮助你。

我注意到使用win32和win64交叉编译器i686-w64-mingw32-gcc和x86_64-w64-mingw32-gcc时,即使调用pthread_exit(NULL),这个编译器警告仍然存在。在本地Linux或arm交叉编译器(gcc-4.8-arm-linux-gnueabihf)下编译时没有收到gcc的警告。 - bph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接