-2
我使用LINUX 10.04我認爲這不是問題,無論如何,我有一個 奇怪的錯誤。 對我來說,所有看起來都很完美。 那麼問題是什麼? 對不起,這種格式type.i新來這裏。使用Pthreads奇怪的編譯錯誤
//COMPILE with: gcc -g -Wall -pthread pthread_ex_book_pg193.c -lpthread -o MYthread
/* the program is simple.We create two threads One is for the main() and th esecond with the pthread_create().
The second thread calls a function runner() to calculate a sum and when it finishes it returns to the main thread */
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
int sum;
void *runner(void *argv[]);
int main (int argc,char *argv[]){
pthread_t tid; //thread id
pthread_attr_t attr;//thread attributes
if (argc!=2){
fprintf(stderr,"usage: a.out<integer value> \n");
return -1;
}
if (atoi(argv[1]) < 0){
fprintf(stderr, "%d must be >=0\n ",atoi(argv[1]));
return -1;
}
pthread_attr_init(&attr);
pthread_create(&tid,&attr,runner,argv[1]);
pthread_join(tid,NULL);
printf("sum = %d \n",sum);
}
void *runner(void *param){
int i;
int upper = atoi(param);
sum=0;
for (i=1;i<=upper;i++){
sum=sum+i;
pthread_exit(0);
}
}
編譯器錯誤的確切文本是什麼?猜測,這是關於你的「跑步者」的前向宣言嗎?它應該是'void * runner(void * arg);' – simonc
SO不是代碼評論網站。試着制定一個關於你不明白的具體問題。錯誤消息很重要,它們提供信息,讀取它們,分享它們。 –
GCC打印的: pthread_ex_book_pg193.c:在函數 '主': pthread_ex_book_pg193.c:25:警告:從兼容的指針類型 /usr/include/pthread.h:225傳遞 '在pthread_create' 的參數3:注:期望'void *(*)(void *)',但參數的類型爲'void *(*)(void **)' pthread_ex_book_pg193.c:頂級: pthread_ex_book_pg193.c:30:錯誤:衝突'runner'的類型 pthread_ex_book_pg193.c:12:note:之前的'runner'聲明在這裏 nkbaroutis @ nkbaroutis-VGN-FW11M:〜/ Cscripts/threads $ – TraffyT