コンパイル時にintからpointerへ異なるサイズへのcastでエラーが出ていて、return先がvoid *のためcast
しているのですが、うまくコンパイルできない原因がわかりません。
c
1gcc -pthread -g firstTread4.c 2firstTread4.c: In function ‘threadFunc’: 3firstTread4.c:13:14: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] 4 return (void *)n;
ソース
c
1#include <stdio.h> 2#include <stdlib.h> 3#include <unistd.h> 4#include <pthread.h> 5 6void *threadFunc(void *arg){ 7 int n = *(int *)arg; 8 int i; 9 for(i=0;i<n;i++){ 10 printf("I'm,threadFunc:%d\n",i); 11 sleep(1); 12 } 13 return (void *)n; 14} 15 16int main(int argc,char *argv[]){ 17 pthread_t thread; 18 int n,i,ret; 19 20 if(argc > 1){ 21 n = atoi(argv[1]); 22 }else{ 23 n = 1; 24 } 25 26 if(pthread_create(&thread,NULL,threadFunc,&n) !=0){ 27 printf("Error:Failed to create new thread.\n"); 28 exit(1); 29 } 30 for(i=0;i<5;i++){ 31 printf("I'm main:%d\n",i); 32 sleep(1); 33 } 34 35 if(pthread_join(thread,(void **)&ret) != 0){ 36 printf("Error: Failed to wait for the thread termination.\n"); 37 exit(1); 38 } 39 40 printf("threadFunc has been terminated with number %d\n",ret); 41 printf("Bye.\n"); 42 43 return 0; 44}
回答8件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/23 01:53