Я передаю массив типа int pthread_create и получив ошибку:
histogram.c:138:3: warning: passing argument 3 of 'pthread_create' from incompatible pointer type [enabled by default] expected 'void * (*)(void *)' but argument is of type 'void * (*)(int *)' void *output_results(); pthread_create(&t2, NULL, output_results, (void *)bins); void *output_results(int *bins) { some code }
Должно быть
void *output_results(void*); pthread_create(&t2, NULL, output_results, (void *)bins); void *output_results(void *data) { int *bins = (int*)data; // some code }
Сообщение об ошибке довольно ясно: функция должна быть типа void * (*)(void *)
а не void * (*)(int *)
(плюс ваш прототип для output_results
не соответствовал его определению).
Ошибка компиляции заключается в том, что pthread_create
ожидает void *output_results(void *bins)
, но у вас есть int *bins
.
Кроме того, объявление результатов output_results
которые вы используете, не соответствует его определению.