0

我正在查看一个 C 客户端-服务器程序并遇到了这个问题。编译器抱怨该函数“在返回 void 的函数中返回一个值”。

我的问题是,返回 (NULL) 而不是简单地返回有什么意义?这可能是为了避免调用者收回垃圾吗?

void *ThreadMain(void *threadArgs)
{
    int clntSock;                   /* Socket descriptor for client connection */

    /* Guarantees that thread resources are deallocated upon return */
    pthread_detach(pthread_self()); 

    /* Extract socket file descriptor from argument */
    clntSock = ((struct ThreadArgs *) threadArgs) -> clntSock;
    free(threadArgs);              /* Deallocate memory for argument */

    HandleTCPClient(clntSock);

    return (NULL);
}
4

3 回答 3

3
 "return with a value, in function returning void".

您有一些其他具有返回类型的函数,void并且您正在从该函数返回一个值。但是您发布的功能不是那个功能。基本上您发布的功能与您的问题无关:)

您发布的返回类型void *不同于void. 所以这不是编译器抱怨的功能。查看代码中返回void(not void *) 的其他函数,并且其中一个(或多个)返回。

于 2013-01-19T23:03:20.627 回答
0

返回的原因NULL是返回一个指向“无”的指针。

于 2013-01-19T22:56:05.713 回答
0

他返回 NULL 因为“合同”说他必须返回一个指针,而且他显然不能/不想更改合同。

于 2013-01-19T23:10:37.600 回答