Pthreads - 为什么C函数被声明为void *?

时间:2015-02-03 20:50:12

标签: c pthreads

示例(source):

#include <pthread.h>
#include <stdio.h>
#define NUM_THREADS     5

void *PrintHello(void *threadid)
{
   long tid;
   tid = (long)threadid;
   printf("Hello World! It's me, thread #%ld!\n", tid);
   pthread_exit(NULL);
}

声明该函数返回一个void指针,但其体内没有return语句。这是怎么回事?

通常,如果函数已声明为返回值(在本例中为void指针)并且没有return语句,则其行为未定义。 评论说pthread_exit(NULL)等同于调用return NULL - 它怎么可能?您可以B()调用A()中的B()函数,A调用将返回{{1}}。返回语句指的是它们的放置函数。

1 个答案:

答案 0 :(得分:0)

我们只能推测可能发生的事情,但因为它看起来像是“Hello,World!”程序,合理的猜测是指向该函数的指针旨在传递给pthread_create()pthread_create()需要指向具有该签名的函数的指针。这是一个奇怪的建筑;对于函数来说,返回NULL

是相同但更清晰的