1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <unistd.h> 5 #include <semaphore.h> 6 #include <sys/types.h> 7 #include <dirent.h> 8 #include <pthread.h> 9 #include <errno.h> 10 #include <signal.h> 11 #include <time.h> 12 13 struct food 14 { 15 int a; 16 int b; 17 int c; 18 }; 19 struct food apple; 20 21 void* task1(void* arg) 22 { 23 apple.a = 23; 24 apple.b = 82; 25 apple.c = 59; 26 pthread_exit((void*)&apple); 27 } 28 29 int main(int argc, char *argv[]) 30 { 31 pthread_t thrd1, thrd2, thrd3; 32 void* tret; 33 34 pthread_create(&thrd1, NULL, (void*)task1, NULL); 35 pthread_join(thrd1, (void*)&tret); 36 37 printf("The food:%d %d %d\n", tret->a, tret->b, tret->c); // 这行出现了严重的错误 38 printf("Main thread exit...\n"); 39 40 return 0; 41 }
程序输出:
[root@robot ~]# gcc thread_exit.c -lpthread -o thread_exit thread_exit.c: In function 'main': thread_exit.c:37: warning: dereferencing 'void *' pointer thread_exit.c:37: error: request for member 'a' in something not a structure or union thread_exit.c:37: warning: dereferencing 'void *' pointer thread_exit.c:37: error: request for member 'b' in something not a structure or union thread_exit.c:37: warning: dereferencing 'void *' pointer thread_exit.c:37: error: request for member 'c' in something not a structure or union [root@robot ~]#