예 (source) :Pthreads - 왜 C 함수가 void *로 선언 되었습니까?
#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);
}
이 기능은 무효 포인터를 반환하는 선언하지만, 몸에는 return 문이 없다. 여기서 무슨 일이 일어나고있는거야?
일반적으로 함수가 값 (이 경우 void 포인터)을 반환하고 반환 문이없는 것으로 선언 된 경우 해당 동작은 정의되지 않습니다. 댓글 pthread_exit(NULL)
은 return NULL
을 호출하는 것과 같습니다. 어떻게 될 수 있습니까? 함수 B()
을 A()
에서 호출하여 B()
이 A
으로 반환되는 방식으로 호출 할 수 있습니다. return 문은 해당 문이 배치 된 함수를 참조합니다.
'pthread_exit'가 호출자에게 반환되지 않습니다. –
여전히 궁금한 점이 있습니다. 왜 void * return 유형을 지정해야합니까? 왜 그냥 무효가되지 않습니까? –
@ 존 볼링 거 -이게 뭐죠? –