Bonjour,
J'ai un petit problème que je n'arrive pas à comprendre.
voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <pthread.h>
#include <stdio.h>
#include <stdbool.h>

#define MAX 16

typedef bool echiquier[MAX][MAX];


struct MyArgs
{
  int i;
  char s[16];
  echiquier e;
};

void* nreines(void *p)
{
  struct MyArgs *args = p;
  if(args->e[10][10])
    {
      printf("ok\n");
    }
     printf("Got %d %s\n", args->i, args->s);
     
     return NULL;
}


int main()
{
  pthread_t id;
  echiquier e;
  e[10][10]=true;
  struct MyArgs args = { 42, "TazForEver", e };
  
  if(pthread_create(&id, NULL, nreines, &args) != 0)
    {
      perror("thread_start" );
      return 1;
    }
  
  if(pthread_join(id, NULL) != 0)
    {
      perror("thread_join" );
      return 2;
    }
  
  return 0;
}

Le problème est que je passe e[10][10] à true dans la fonction main et ensuite je construit un element du type MyArgs avec ce même e.

Ce que je ne comprends pas c'est pourquoi la valeur de e[10][10] n'est pas conservée dans nreines.
Si j'enleve e[10][10] de la fonction nreines, "ok" ne s'affiche pas.

Voilà si vous avez des idées elles sont les bienvenues.

Merci d'avance
Nieli