Je passe un tableau de type int pthread_create et j’obtiens une erreur:
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 }
Devrait être
void *output_results(void*); pthread_create(&t2, NULL, output_results, (void *)bins); void *output_results(void *data) { int *bins = (int*)data; // some code }
Le message d’erreur est assez clair: la fonction doit être de type void * (*)(void *)
et non void * (*)(int *)
(plus votre prototype pour output_results
ne correspond pas à sa définition).
L’erreur de compilation est due au fait que pthread_create
attend void *output_results(void *bins)
, mais vous avez int *bins
.
De plus, la déclaration de output_results
que vous utilisez ne correspond pas à sa définition.