Oct 28, 2011 at 5:05pm UTC
I typed the following code into CodeLite (Linux) and it gave me the error below:
:18:62: error: invalid conversion from ‘void* (*)()’ to ‘void* (*)(void*)’ [-fpermissive]
//CODE HERE///
#include <stdio.h>
#include <pthread.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
void *functionC();
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
int counter = 0;
main()
{
int rc1, rc2;
pthread_t thread1, thread2;
/* Create independent threads each of which will execute functionC */
if( (rc1=pthread_create( &thread1, NULL, &functionC, NULL)) )
{
printf("Thread creation failed: %d\n", rc1);
}
if( (rc2=pthread_create( &thread2, NULL, &functionC, NULL)) )
{
printf("Thread creation failed: %d\n", rc2);
}
/* Wait till threads are complete before main continues. Unless we */
/* wait we run the risk of executing an exit which will terminate */
/* the process and all threads before the threads have completed. */
pthread_join( thread1, NULL);
pthread_join( thread2, NULL);
exit(0);
}
void *functionC()
{
pthread_mutex_lock( &mutex1 );
counter++;
printf("Counter value: %d\n",counter);
pthread_mutex_unlock( &mutex1 );
}
Could anyone please explain to me why i got this error and how to correct it
Thankz for your answers and comments
Oct 28, 2011 at 6:43pm UTC
The function prototype takes a void* parameter.
Oct 29, 2011 at 8:10pm UTC
So how exactly should fix this problem
Oct 30, 2011 at 5:40pm UTC
rmsharkey has given you an (the!) exact answer!
Your function needs to match the prototype!!
Last edited on Oct 30, 2011 at 5:42pm UTC