2017-05-27 96 views
0

我試圖使用pthread_create創建一個將運行函數的線程,但我得到的是incompatible type for argument 4 of pthread_create。 我見過關於這個問題的一些帖子,但沒有提供的解決方案沒有爲我解決它。嘗試使用pthread_create時出錯

下面是相關的代碼:

typedef struct { 
    const char *filename; 
    Queue *url_queue; 
} FileReaderArguments; 


void *file_reader(void *args) { 
// function code.. 
} 

void parallel_checker(const char *filename, int number_of_threads) { 
     FileReaderArguments file_reader_arguments = {0}; 
     CollectorArguments collector_arguments = {0}; 
     pthread_t file_reader_thread, collector_thread; 
     // PROBLEMATIC LINE 
      pthread_create(file_reader_thread, NULL, &file_reader, file_reader_arguments); 
     // END OF PROBLEMATIC LINE 
     // more code.. 
} 
+0

第四個參數需要是一個指針 - 你的不是。 – tofro

+0

@tofro明白了。謝謝。 – Noam

回答

0

即是考慮到你的函數預期爲一個指針,因爲這是概括類型C.當調用pthread_create的唯一途徑的論點您將指針傳遞給參數。請參閱this page,編譯器期望在您傳遞整個結構變量的同時指定類型爲void *的指針。