LINUX.ORG.RU

не создается тред


0

0

делаю:
pthread_t th1;
...
pthread_create(&th1,NULL,print_msg,NULL);
...
компилю g++ pth.cpp -o pth -lpthread
ошибка:
invalid conversion from 'void (*)(void*)' to 'void*(*)(void)'

где что крутить?
спасибо...

anonymous

прототип print_msg в студию!

Murr ★★
()

P.S. Если это Linux, то нужно вместо -lpthread писать -pthread.

Murr ★★
()

пожайлуста:

void print_msg (char *ptr)
{
char *message;
message = (char *) ptr;
cout << message << endl;
}

p.s ключ -pthread не помогает

anonymous
()
Ответ на: комментарий от anonymous

Дык он не void должен быть ;) Хотя бы int напиши ;) а в идеале void *

Murr ★★
()

спасибочки :)

anonymous
()

Было бы за что ;)
Так вроде работает
[root@murr tmp]# cat ptest.cpp
#include <stdio.h>
#include <pthread.h>


void * print_msg (void *ptr)
{
char *message;
message = (char *) ptr;
printf ("%s\n", ptr);
return 0;
}



int main () {
pthread_t th1;
pthread_create(&th1,NULL,print_msg,NULL);
return 0;
}
[root@murr tmp]# g++ -pthread ptest.cpp


Какие-то плюсы дюже типизированные :-/

Murr ★★
()

В C и с int всё шоколадно:

[root@murr tmp]# cat ptest.c
#include <stdio.h>
#include <pthread.h>


int print_msg (void *ptr)
{
 char *message;
 message = (char *) ptr;
 printf ("%s\n", ptr);
 return 0;
}



int main () {
pthread_t th1;
pthread_create(&th1,NULL,print_msg,NULL);
return 0;
}
[root@murr tmp]# gcc -pthread ptest.c
ptest.c: In function `main':
ptest.c:17: warning: passing arg 3 of `pthread_create' from incompatible pointer type
[root@murr tmp]#

Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.