thread sur SUN et sur linux [C] - C - Programmation
Marsh Posté le 11-11-2004 à 12:06:39
Il y a des fonctions non-portable dans certaines version de cette lib, sans le code c'est vrai qu on ira pas loin.
Marsh Posté le 11-11-2004 à 12:08:13
| Taz a écrit : ton code  | 
 
 
| Code : 
 | 
 
 
pas taper   
  
 
ps : regarde pas à la logique du code   
 
Marsh Posté le 11-11-2004 à 12:11:48
heu, se serait possible que se soit a cause de   
| Code : 
 | 
 
 
qui doit etre jsute en dessous du main et pas au milieu ?
Marsh Posté le 11-11-2004 à 12:13:34
declare ca : pthread_t threads[NB_THREAD]; au debut du main 
 
[edit] owned 
 
A mon avis sur sun tu compilais avec un compilateur c++;
Marsh Posté le 11-11-2004 à 13:20:33
| Diody a écrit : declare ca : pthread_t threads[NB_THREAD]; au debut du main  | 
 
 
owned par moi en plus ![[:ddr555] [:ddr555]](https://forum-images.hardware.fr/images/perso/ddr555.gif) 
 
 
non, j'utilisait gcc, j'ai repris le meme makefile pour compiler ce fichier   
  
 
Peut etre que les versions de gcc utilisées ne sont pas les memes   
 
Marsh Posté le 11-11-2004 à 14:22:39
| Taz a écrit : gcc-3.0 utilise le mode par défaut gnu9x, gcc-2.9 gnu8x  | 
 
 
  
  
 
moi qui ai la mauvaise (?) habitude de déclarer des varaibles un peut partout, j'ai souvent de mauvaises surprise sur mon linux   
 
Marsh Posté le 11-11-2004 à 14:28:12
ce n'est pas une mauvaise habitude du tout. c'est même conseiller. seulement le C ANSI / iso89 ne le permet pas. gcc2.95 ne le permet pas par défaut car il suit l'ANSI. un truc genre -std=gnu9x devrait tout régler quelque soit ton compilateur.
Marsh Posté le 11-11-2004 à 14:34:58
| Taz a écrit : ce n'est pas une mauvaise habitude du tout. c'est même conseiller. seulement le C ANSI / iso89 ne le permet pas. gcc2.95 ne le permet pas par défaut car il suit l'ANSI. un truc genre -std=gnu9x devrait tout régler quelque soit ton compilateur.  | 
 
 
ha, tu me rassure  
 
 
j'essaierai cet option de gcc chez moi, encore merci 
Marsh Posté le 11-11-2004 à 14:44:42
Au pire, tu scopes. Je le fais parfois, même en C++ quand j'ai besoin qu'un destructeur soit appellé là ou je veux. 
 
void f() 
{ 
  // blablabla 
 
  { 
    phtread_t threads[5]; 
    // lalala, le reste 
  } 
} 
Marsh Posté le 11-11-2004 à 14:45:23
| Lam's a écrit : Au pire, tu scopes. Je le fais parfois, même en C++ quand j'ai besoin qu'un destructeur soit appellé là ou je veux.  | 
 
 
en fait, il verifie uniquement que les declarations soient en debut de bloc ?
Marsh Posté le 11-11-2004 à 14:49:42
| didier1809 a écrit : en fait, il verifie uniquement que les declarations soient en debut de bloc ?  | 
 
 
oui. 
 
Marsh Posté le 11-11-2004 à 11:50:57
bonjour,
j'ai fait un petit programme qui utilise un thread sur une machine sun, en compilant avec -lpthread, ca passe sans probleme. J'ai reprit ce code chez moi, et il ne veut plus compiler : message d'erreur :
gcc -I"." -lpthread -c labo3_main.c
labo3_main.c: In function `main':
labo3_main.c:62: parse error before `threads'
labo3_main.c:66: `threads' undeclared (first use in this function)
labo3_main.c:66: (Each undeclared identifier is reported only once
labo3_main.c:66: for each function it appears in.)
make: *** [labo3_main.o] Erreur 1
evidemment, il y a #include <pthread.h> dans ce fichier
---------------
.