[Pthreads/Windows] Problème avec pthread_t
Bonsoir,
Voilà un code qui illustre mon problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <stdio.h>
#include <pthread.h>
struct s
{
pthread_t id;
void* (*pf) (void*);
};
static void* f (void* p);
int main (void)
{
struct s s1 = {0, f};
s1.pf(NULL);
return 0;
}
static void* f (void* p)
{
(void)p;
puts("test");
return NULL;
} |
GCC me dit :
Code:
1 2 3 4 5 6
| forums.c: In function `main':
forums.c:15: warning: missing braces around initializer
forums.c:15: warning: (near initialization for `s1.id')
forums.c:15: warning: initialization makes integer from pointer without a cast
forums.c:15: warning: missing initializer
forums.c:15: warning: (near initialization for `s1.pf') |
Visual C 2005 :
Code:
1 2
| forums.c(15) : warning C4047: 'initialisation'*: 'unsigned int' diffère de 'void
*(__cdecl *)(void *)' dans les niveaux d'indirection |
Et à l'exécution, ça plante. Si dans la structure s1 je remplace le champ pthread_t par un int, aucun problème (à la compilation et à l'exécution).
Les headers et la bibliothèque pthreads viennent du fichier "pthreads-w32-2-8-0-release.exe" téléchargé sur ce site : http://sourceware.org/pthreads-win32/.
Est-ce qu'il y a une erreur dans mon code ? J'avoue pour le moment ça m'échappe complètement. Je testerai sur une autre plateforme demain mais ça m'arrangerait de pouvoir utiliser les pthreads sous Windows aussi.
Merci.