2013-11-25 31 views
0

沒有匹配函數調用 '在pthread_create' 不匹配函數調用 '在pthread_create'在Xcode

# include <stdio.h> 
# include <pthread.h> 

string nextProduced; 
string nextConsumed; 
char *BUFFER; 
int BufferSize = 10; 
void putItemIntoBuffer(); 
string produceItem(); 
string consumeItem(); 
void *Producer(); 
void *Consumer(); 

pthread_cond_t Buffer_Not_Full=PTHREAD_COND_INITIALIZER; 
pthread_cond_t Buffer_Not_Empty=PTHREAD_COND_INITIALIZER; 
pthread_mutex_t mVar=PTHREAD_MUTEX_INITIALIZER; 

int main() 
{ 
pthread_t pro, con; 

BUFFER=(char *) malloc(sizeof(char) * BufferSize); 

pthread_create(&pro,NULL,Producer,NULL);// Creates threads 

pthread_create(&con,NULL,Consumer,NULL);// Creates threads 

pthread_join(pro,NULL); 

pthread_join(con,NULL); 


return 0; 

}

Xcode中給我的錯誤, 「找不到匹配函數調用 '在pthread_create'」。我不知道我做錯了什麼。任何幫助將不勝感激。

我能夠得到它編譯,但我現在得到這個消息。 我不知道問題是什麼。 線程1,隊列:com.apple.main線程

libsystem_c.dylib`strlen: 
0x7fff8d8364e0: pxor %xmm0, %xmm0 
0x7fff8d8364e4: movl %edi, %ecx 
0x7fff8d8364e6: movq %rdi, %rdx 
0x7fff8d8364e9: andq $-16, %rdi 
0x7fff8d8364ed: orl $-1, %eax 
0x7fff8d8364f0: pcmpeqb(%rdi), %xmm0 Thread 1:EXC_ACCESS (code=1, address=0x0) //line in question 
0x7fff8d8364f4: andl $15, %ecx 
0x7fff8d8364f7: shll %cl, %eax 
0x7fff8d8364f9: pmovmskb%xmm0, %ecx 
0x7fff8d8364fd: andl %eax, %ecx 
0x7fff8d8364ff: je  0x7fff8d83650b   ; strlen + 43 
0x7fff8d836501: bsfl %ecx, %eax 
0x7fff8d836504: subq %rdx, %rdi 
0x7fff8d836507: addq %rdi, %rax 
0x7fff8d83650a: ret  
0x7fff8d83650b: pxor %xmm0, %xmm0 
0x7fff8d83650f: addq $16, %rdi 
0x7fff8d836513: movdqa (%rdi), %xmm1 
0x7fff8d836517: addq $16, %rdi 
0x7fff8d83651b: pcmpeqb%xmm0, %xmm1 
0x7fff8d83651f: pmovmskb%xmm1, %ecx 
0x7fff8d836523: testl %ecx, %ecx 
0x7fff8d836525: je  0x7fff8d836513   ; strlen + 51 
0x7fff8d836527: subq $16, %rdi 
0x7fff8d83652b: jmp 0x7fff8d836501   ; strlen + 33 
+4

傳遞給'pthread_create'的函數指針應該是一個帶'void *'參數的函數。你可以嘗試改變'Producer'和'Consumer'來做到這一點嗎?即'void * Producer(void * arg);' – simonc

+2

在將來發布有關編譯器或鏈接器錯誤的問題時,請提供* complete *和*未經編輯的*錯誤日誌。通常有更多的消息可能有助於回答錯誤。 –

+0

@simonc幫助,但現在我得到線程1,隊列:com.apple.main-thread – user1184034

回答

0

你的生產者和消費者功能的簽名應該如下:

void *Producer(void *data); 
void *Consumer(void *data); 

我相信你需要通過屬性參數以及。一個很好的例子見Apple's Documentation