我正在查看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);
}
答案 0 :(得分:2)
"return with a value, in function returning void".
你有一些其他函数有一个返回类型void
,你从该函数返回一个值。但是您发布的功能不是那个功能。基本上你发布的功能与你的问题无关:)
您发布的回复类型void *
与void
不同。所以这不是编译器抱怨的功能。查看代码中返回void
(而不是void *
)的其他函数,并在一个(或多个)函数中返回。
答案 1 :(得分:0)
返回NULL
的原因是返回指向“nothing”的指针。
答案 2 :(得分:0)
他正在返回NULL,因为“合同”说他必须返回一个指针,他显然不能/不想改变合同。