Liste chainée

Liste chainée - C - Programmation

Marsh Posté le 23-12-2005 à 16:35:26    

Bonjour,  
 
Je doit réaliser une liste chainée, créer un nouveau maillon, l' insérer en fin de liste, afficher à l'écran la valeur du maillon , son adresse et l' adresse du maillon suivant.  
 
Sachant que les types sont prédéfinis, et que je doit utiliser les arguments entrer au clavier lors de l'execution.  
 
Voici mon code, plusieurs erreurs interviennent lors de la compilation :  
 
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <windows.h>
  5. #include <string.h>
  6. int Tvaleur;
  7. typedef struct Tmaillon{
  8. struct Tvaleur valeur;
  9. Tmaillon * suivant;
  10. }Tmaillon;
  11. Tmaillon *Tliste;
  12. void nouveau_maillon(Tvaleur val)
  13. {
  14. Tmaillon* L;
  15. L=malloc(2*sizeof(int));
  16.  
  17. *L.suivant=0;
  18. *L.valeur=val;
  19. return &L;
  20. }
  21. void insertion_fin(Tliste* liste, Tmaillon * maillon)
  22. {
  23. Tmaillon * curseur;
  24. curseur = liste ;
  25. while (curseur->suivant)(!= 0)
  26. {
  27. curseur=curseur-> suivant;
  28. }
  29. curseur-> suivant =maillon;
  30. }
  31. void afficher_liste(Tliste liste)
  32. {
  33. int cpt;
  34. for(cpt=0;cpt=argc;cpt++)
  35. {
  36. printf(" %d....%d....%d...., *liste[cpt],(**liste).valeur,*liste[cpt+1]/n" );
  37. }
  38. int main(int argc,char**argv)
  39. {
  40. int*n
  41. int cpt;
  42. for(cpt=0;cpt=argc;cpt++)
  43. {
  44. n=nouveau_maillon(argv[cpt]);
  45. insertion_fin(@L,n);
  46. afficher_liste(L);
  47. }
  48. }


 
Voici les différentes erreurs qui me sont donner leurs de la compilation :  
 
parse error before `Tvaleur'  
.c:10: warning: no semicolon at end of struct or union  
c:12: parse error before `}'  
c:12: warning: data definition has no type or storage class  
c:14: parse error before `*'  
c:14: warning: data definition has no type or storage class  
c:16: parse error before `val'  
c: In function `nouveau_maillon':  
c:18: `L' undeclared (first use in this function)  
c:18: (Each undeclared identifier is reported only once  
c:18: for each function it appears in.)  
.c:24: `val' undeclared (first use in this function)  
c:26: warning: `return' with a value, in function returning void  
c: At top level:  
c:30: parse error before `*'  
c: In function `insertion_fin':  
c:33: `curseur' undeclared (first use in this function)  
c:34: `liste' undeclared (first use in this function)  
c:36: parse error before `!='  
c: At top level:  
c:43: parse error before `->'  
c:47: parse error before `liste'  
c: In function `afficher_liste':  
c:52: `argc' undeclared (first use in this function)  
c:58: parse error before `int'  
c:66: `n' undeclared (first use in this function)  
c:66: `argv' undeclared (first use in this function)  
c:67: parse error before `@'  
c:68: `L' undeclared (first use in this function)  
 
 
 
 

Reply

Marsh Posté le 23-12-2005 à 16:35:26   

Reply

Marsh Posté le 23-12-2005 à 16:37:40    

duranton a écrit :


.c:10: warning: no semicolon at end of struct or union  
c:12: parse error before `}'  


 
deja rajotue un ; a la fin de tes declarations de structures :o
ca devraient enlever pas mal de messages d'erreur

Reply

Marsh Posté le 23-12-2005 à 16:38:10    

t'es marrant, t'as qu'à utilise exactement le même nom pour tous tes types, variables, fonctions et paramètres.

Reply

Marsh Posté le 23-12-2005 à 16:42:53    

duranton a écrit :

Bonjour,  
 
Je doit réaliser une liste chainée, créer un nouveau maillon, l' insérer en fin de liste, afficher à l'écran la valeur du maillon , son adresse et l' adresse du maillon suivant.  


 
NULL ?


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 23-12-2005 à 18:11:34    

J' ai essayer de reprendre mon code avec vos différentes remarques et j' ai tjs des erreurs, je pense qu'elles viennent essentiellement de la déclaration des types ou je sais pas bien comment mis prendre.  
 
Voila le nouveau code :  
 
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <windows.h>
  5. #include <string.h>
  6. int Tvaleur;
  7. typedef struct Tmaillon{
  8. struct Tmaillon * suivant;
  9. struct Tvaleur valeur;
  10. }Tmaillon;
  11. struct Tmaillon *Tliste;
  12. void nouveau_maillon(struct Tvaleur val)
  13. {
  14. Tmaillon* L;
  15. L=malloc(2*sizeof(int));
  16.  
  17. *L.suivant=0;
  18. *L.valeur=val;
  19. return L;
  20. }
  21. void insertion_fin(Tliste* liste, Tmaillon * maillon)
  22. {
  23. Tmaillon * curseur;
  24. curseur = liste ;
  25. while ((**liste).suivant=!0)
  26. {
  27. curseur=(**liste).suivant ;
  28. }
  29. (**liste).suivant=maillon;
  30. }
  31. void afficher_liste(Tliste liste)
  32. {
  33. int cpt;
  34. for(cpt=0;cpt=argc;cpt++)
  35. {
  36. printf(" %d....%d....%d...., *liste[cpt],(**liste).valeur,*liste[cpt+1]/n" );
  37. }
  38. }
  39. int main(int argc,char**argv)
  40. {
  41. int*n;
  42. int cpt;
  43. for(cpt=0;cpt==argc;cpt++)
  44. {
  45. n=nouveau_maillon(argv[cpt]);
  46. insertion_fin(Tliste,n);
  47. afficher_liste(Tliste);
  48. }
  49. }


 
et voici les erreurs :  
 
c:11: field `valeur' has incomplete type  
c:17: parameter `val' has incomplete type  
c: In function `nouveau_maillon':  
c:22: request for member `suivant' in something not a structure or union  
c:24: request for member `valeur' in something not a structure or union  
c:26: warning: `return' with a value, in function returning void  
c: At top level:  
c:30: parse error before `*'  
c: In function `insertion_fin':  
c:34: `liste' undeclared (first use in this function)  
c:34: (Each undeclared identifier is reported only once  
c:34: for each function it appears in.)  
c:43: `maillon' undeclared (first use in this function)  
c: At top level:  
c:47: parse error before `liste'  
c: In function `afficher_liste':  
c:52: `argc' undeclared (first use in this function)  
c: In function `main':  
c:67: type of formal parameter 1 is incomplete  
c:67: void value not ignored as it ought to be

Reply

Marsh Posté le 23-12-2005 à 18:49:44    

Code :
  1. int Tvaleur;
  2. typedef struct Tmaillon{
  3. struct Tmaillon * suivant;
  4. struct Tvaleur valeur;
  5. }Tmaillon;


 
Tvaleur est une variable de type int. Ce n'est pas une structure, tu ne peux donc pas déclarer "valeur" de type "struct Tvaleur".
 

Code :
  1. struct Tmaillon *Tliste;


 
Les variables globales, c'est mal (sauf cas particulier, quand on sait vraiment ce que l'on fait).
 

Code :
  1. void nouveau_maillon(struct Tvaleur val)


 
Encore une fois, Tvaleur est une variable de type int, ce n'est pas un type et encore moins une structure.
 

Code :
  1. L=malloc(2*sizeof(int));


L est de type "struct Tmaillon *", et non de type "int".
Ton malloc() devrait plutôt s'écrire :
L = malloc(2 * sizeof(struct Tmaillon));
 
De plus, malloc() peut éventuellement échouer. Avant d'utiliser "L", il faut vérifier que l'appel à malloc() s'est bien déroulé (vérifier que L != NULL après le malloc).
 

Code :
  1. *L.suivant=0;


L.suivant est de type "struct Tmaillon*". Le déréférencement du pointeur est inutile (et ce n'est pas ce que tu veux faire).
Ce que tu veux faire, c'est :
L.suivant = NULL;
 
Bon je m'arrête là mais le reste est de la même facture, il te faut revoir la base du C, à savoir les types de données, les pointeurs et les structures. Ce n'est pas une critique..
Par contre tu tentes du code au hasard en espérant que ça passe ; il n'y a pas de problème à ne pas saisir un concept, et dans ce cas-là il y a un réflexe que tu dois acquérir très vite, essentiel à la programmation : rechercher la documentation correspondante.
 
Tu peux par exemple lire ceci : http://mapage.noos.fr/emdel/init_c.htm
(et plus généralement les différents articles de ce site)


Message édité par Elmoricq le 23-12-2005 à 18:51:37
Reply

Marsh Posté le 23-12-2005 à 18:50:27    

int Tvaleur;
 
typedef struct Tmaillon{
struct Tmaillon * suivant;
struct Tvaleur valeur;
}Tmaillon;
 
y a rien qui te choqeu o_O
tu definis une VARIABLE TValeur de type int puis tu definie un champ de TYPE TValeur ....
 
EDIT : grillaid :o  [:joel f]


Message édité par Joel F le 23-12-2005 à 18:50:55
Reply

Marsh Posté le 24-12-2005 à 00:47:02    

Tous d'abord merci pour les différentes remarques et conseils que vous m'avez donner,en effet j' ai d'énorme difficulté à programmer et le site ma bien aider à comprendre ce que je fesai.  
 
Ensuite mon code n' a plus aucune erreurs lors de la compilation mais ne fonctionne pas lors que je le lance.  
 
Je dois garder les types car ils sont donné dans l' énoncer.  
 
Voici le code final :  
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. typedef int Tvaleur;
  4. typedef struct Tmaillon{
  5. Tvaleur valeur;
  6. struct Tmaillon*suivant;
  7. }Tmaillon;
  8. typedef struct Tmaillon*Tliste;
  9. struct Tmaillon * nouveau_maillon(Tvaleur val)
  10. {
  11. struct Tmaillon*L;
  12. L=malloc(sizeof*L);
  13.  
  14. (*L).suivant=NULL;
  15. (*L).valeur=val;
  16. return L;
  17. }
  18. void insertion_fin(Tliste *liste,struct Tmaillon*maillon)
  19. {
  20. struct Tmaillon*curseur;
  21. curseur = liste;
  22. while ((**liste).suivant!=NULL)
  23. {
  24. curseur=(**liste).suivant ;
  25. }
  26. (**liste).suivant=maillon;
  27. }
  28. void afficher_liste(Tliste liste)
  29. {
  30. printf(" %d",(*liste).valeur);
  31. liste=liste->suivant;
  32. }
  33. int main(int argc,char**argv)
  34. {
  35. Tliste liste;
  36. struct Tmaillon*n;
  37. int cpt;
  38. n=NULL;
  39. for(cpt=1;cpt<argc;cpt++)
  40. {
  41. n=nouveau_maillon(atoi(argv[cpt]));
  42. insertion_fin(&liste,n);
  43. }
  44. afficher_liste(liste);
  45. }


 
Joyeux Noel

Reply

Marsh Posté le 24-12-2005 à 01:21:21    

wow ! alors là je suis pas spécialiste en programmation mais ton code est pas tip top :lol:  
 
pour la fonction afficher, tel quel tu va avoir un dépassement de tableau (EDIT : non en fait tu va te déplacer d'un cran cf. gocho) et donc un segmentation fault, ta fonction je l'écrirai comme ca (ton printf a l'air juste mais compliqué..) :
 

Code :
  1. void afficher_liste(Tliste liste)
  2. {
  3. while (liste != NULL) {
  4. printf("%d\n",liste->valeur);
  5. liste=liste->suivant;
  6. }
  7. }


 
et pour le reste ...je comprend pas le trip des **liste ..enfin si ...mais c'est hachement compliqué!! et puis pourquoi tu utilises des  

Code :
  1. struct Tmaillon


 
alors que tu définis des type Tmaillon en début de programme avec des

Code :
  1. typedef struct Tmaillon

 :??: ..tu devrais utiliser des Tmaillon puisque tu définis ces types avec le typedef...pas la peine de remettre les struct Tmaillon, ou alors enlève le typedef. D'ailleurs tu l'a très bien fait avec le Tvaleur.
 
Le nom de variable Tliste prete un peu a confusion, non ? à cause de ca t'es obligé de te palucher des doubles pointeurs de partout ...pourquoi pas faire un Tmaillon *monmaillon, et puis c'est tout se débrouiller avec ? (comme ca t'acced a monmaillon->valeur au lieu de faire des (**liste).valeur)
 
....maintenant je suis pas spécialiste....
 
geoyeux n'ohël


Message édité par in_your_phion le 24-12-2005 à 01:49:53
Reply

Marsh Posté le 24-12-2005 à 01:42:05    

duranton a écrit :


Code :
  1. L=malloc(sizeof*L);

-->Tu le cree avec la taille qu'il va avoir lorsque tu l'auras cree? :pt1cable: a moins que tu demandes de le creer avec la taille d'un pointeur? (j'ai du mal en cette veille de noel moi [:cupra])je pense que ca va poser des problemes.
Essaye donc un malloc(sizeof struct Tmaillon).
Et aussi, pense a verifier que ton malloc a marché.C'est pas automatique...ce serait malheureux que L == NULL apres le malloc non?

                   

Code :
  1. void insertion_fin(Tliste *liste,struct Tmaillon*maillon)


 -->t'as defini un Tmaillon a partir de struct Tmaillon, utilise le.
 

Code :
  1. struct Tmaillon*curseur;

 
-->pareil qu'au dessus

Code :
  1. void afficher_liste(Tliste liste)
  2. {
  3. printf(" %d",(*liste).valeur);
  4. liste=liste->suivant;
  5. }


-->Quoi qu'il arrive t'afficheras pas toute ta liste etant donne qu'il y a pas de boucle.Tu affiches un
                                                         element, tu passes au suivant et c'est tout.dommage.    

 
 
 
Joyeux Noel


 
 
edit : Joyeux Noel a tous aussi hein !  
edit2 : oue ben j'l'aime bien ce vert alors je vous ..... [:bananav]


Message édité par gocho le 24-12-2005 à 01:43:46
Reply

Marsh Posté le 24-12-2005 à 01:42:05   

Reply

Marsh Posté le 24-12-2005 à 01:43:31    

Déjà, tu pourrais commencer par utiliser ton compilateur correctement :  

% gcc -Wall -ansi -pedantic  maillon.c -o maillon
maillon.c: In function `insertion_fin':
maillon.c:32: warning: assignment from incompatible pointer type
maillon.c: In function `main':
maillon.c:76: warning: control reaches end of non-void function


Donc quand tu vois ça, tu regardes dans insertion_fin. Et là, tu vois que tu assignes liste (de type pointeur sur une Tliste, c'est à dire un pointeur sur un pointeur sur Tmaillon) à curseur (de type pointeur sur Tmaillon). C'est mauvais signe pour la suite :o  
Ensuites tu regardes la ligne juste en dessous, et là tu t'aperçois que tu testes si le pointeur sur l'élément suivant du maillon pointé par liste est nul. S'il ne l'est pas tu modifies curseur ! liste ne change pas, tu boucleras indéfiniment s'il y a plus d'un élément dans ta liste...
 
(le deuxième warning est facile à résoudre, il suffit de rajouter un EXIT_SUCCESS à la fin du main).
 
 
Il y a deuxième problème. Intéresse toi de près à la valeur de liste dans ton main, en particulier lors du premier tour de boucle...

Message cité 1 fois
Message édité par Pillow le 24-12-2005 à 03:18:09
Reply

Marsh Posté le 24-12-2005 à 01:48:23    

P'tain mais [:grilled] dans tous les sens la....ca craint!
 
 
 

Pillow a écrit :

Déjà, tu pourrais commencer par utiliser ton compilateur correctement :  

% gcc -Wall -ansi -pedantic  maillon.c -o maillon
maillon.c: In function `insertion_fin':
maillon.c:32: warning: assignment from incompatible pointer type
maillon.c: In function `main':
maillon.c:76: warning: control reaches end of non-void function


Donc quand tu vois ça, tu regardes dans insertion_fin. Et là, tu vois que tu assignes liste (de type pointeur sur une Tliste, c'est à dire un pointeur sur un pointeur sur Tmaillon) à curseur (de type pointeur sur Tmaillon). C'est mauvais signe pour la suite :o  
Ensuites tu regardes la ligne juste en dessous, et là tu t'aperçois que tu testes si le pointeur sur l'élément suivant du maillon pointé par liste est nul. S'il ne l'est pas tu modifies curseur ! liste ne change pas, tu boucleras indéfiniment s'il y a plus d'un élément dans ta liste...
 
(le deuxième warning est facile à résoudre, il suffit de rajouter un EXIT_SUCESSS à la fin du main).
 
 
Il y a deuxième problème. Intéresse toi de près à la valeur de liste dans ton main, en particulier lors du premier tour de boucle...


 
skoi toutes ces options de compilation ? Tous le monde ne les utilise pas hein [:dawao]

Reply

Marsh Posté le 24-12-2005 à 03:17:21    

gocho a écrit :

skoi toutes ces options de compilation ? Tous le monde ne les utilise pas hein [:dawao]

Ceux qui ne les utilisent pas ont tort [:ootransparent]  
 
 
Par ailleurs, le warning important (le type incompatible) est affiché même sans aucune de ces options :o

Reply

Marsh Posté le 24-12-2005 à 09:42:38    

gocho a écrit :


skoi toutes ces options de compilation ? Tous le monde ne les utilise pas hein [:dawao]


 
hors de -Wall -pedantic pas de salut, certain barbus utilisent même -Werror :o

Reply

Marsh Posté le 24-12-2005 à 11:42:07    

gocho a écrit :

skoi toutes ces options de compilation ? Tous le monde ne les utilise pas hein [:dawao]


 
Euh, si.  
Parce que généralement lorsqu'il y a un warning, c'est qu'il y a une bonne raison.
J'ajoute également "-ansi", sauf quand je dois utiliser des fonctions POSIX (forcément... :o )
 

Joel F a écrit :

hors de -Wall -pedantic pas de salut, certain barbus utilisent même -Werror :o


 
-Werror bof par contre, je ne sais pas si ça a été résolu depuis, mais -Wall -Werror fait que certains warnings n'apparaissent plus du tout, un bug de gcc :heink:

Message cité 1 fois
Message édité par Elmoricq le 24-12-2005 à 11:42:57
Reply

Marsh Posté le 24-12-2005 à 15:53:36    

Dans la suite de mon Tp on me demande de créer une routine permettant d'inserer un élément à la k ième position.  
 
Sachant que l' entête est donnée.
 
 

Code :
  1. void ins_pos(Tliste * liste,int pos,struct Tmaillon*maillon)
  2. {
  3. int cpt;
  4. struct Tmaillon*curseur;
  5. curseur = *liste;
  6.   if (*liste == NULL)
  7.   {
  8.      *liste = maillon;
  9.      return;
  10.   }
  11. for(cpt=1;cpt<pos;cpt++)
  12. {
  13. curseur=curseur->suivant;
  14. }
  15. curseur->suivant=maillon;
  16. maillon->suivant=*liste;
  17. }


 
Une boucle est créer, je n' arrive pas à trouver pourquoi.

Reply

Marsh Posté le 24-12-2005 à 17:09:07    

duranton a écrit :

Dans la suite de mon Tp on me demande de créer une routine permettant d'inserer un élément à la k ième position.  
 
Sachant que l' entête est donnée.
 
 

Code :
  1. void ins_pos(Tliste * liste,int pos,struct Tmaillon*maillon)
  2. {
  3. int cpt;
  4. struct Tmaillon*curseur;
  5. curseur = *liste;
  6.   if (*liste == NULL)
  7.   {
  8.      *liste = maillon;
  9.      return;
  10.   }
  11. for(cpt=1;cpt<pos;cpt++)
  12. {
  13. curseur=curseur->suivant;
  14. }
  15. curseur->suivant=maillon;
  16. maillon->suivant=*liste;
  17. }


 
Une boucle est créer, je n' arrive pas à trouver pourquoi.


 
 
bah ... tu verra si t'utilises abondamment des formules genre "Merci les gars pour votre aide", ou juste "merci" ou ecore "super de faire le boulot a ma place parce que j'ai trop la flemme d'allumer mon cerveau" et même pourquoi pas "merci par avance" si t'es vraiment chaud bouillant, a mon avis ca devrait compiler  :lol:  
 
 

Reply

Marsh Posté le 24-12-2005 à 17:12:00    

Code :
  1. struct Tmaillon*curseur;
  2. curseur = *liste;


 
Autant l'écrire sur une seule ligne, c'est plus lisible :
struct Tmaillon * curseur = *liste;
 

Code :
  1. for(cpt=1;cpt<pos;cpt++)


 
Il se passe quoi si "pos" dépasse le nombre de maillons disponibles dans la liste ?
Réponse : ça plante.
 
 

Code :
  1. curseur->suivant=maillon;
  2. maillon->suivant=*liste;


 
Tu n'as pas l'impression que quelque chose cloche ?

  • Tu perds l'adresse des éléments suivants de la liste
  • Tu fais une référence cyclique : liste->maillon->liste. Si tu cherches à parcourir tous les éléments de la liste, tu boucles à l'infini.


 
 

Citation :

Une boucle est créer, je n' arrive pas à trouver pourquoi.


[:orly2]

Reply

Marsh Posté le 24-12-2005 à 21:41:30    

je demande une explication sur ces options (pour noel que je vais m'empresser d'aller feter!!) ?
(oui j'ai la flemme de chercher [:cupra] et alors???[:dawao])

Reply

Marsh Posté le 25-12-2005 à 01:14:20    

gocho a écrit :

je demande une explication sur ces options (pour noel que je vais m'empresser d'aller feter!!) ?
(oui j'ai la flemme de chercher [:cupra] et alors???[:dawao])


 
Les options de gcc ?  
Rien de sorcier : -Wall affiche tous les warnings (sans cette option, les warnings sont "silencieux" ), tandis que -pedantic demande une plus stricte compatibilité avec la norme ANSI (généralement on l'accompagne de -ansi, d'ailleurs).
 
Personnellement je retire -pedantic sur certains modules uniquement destinés à être utilisés sur Unix (par exemple un programme avec gestion des signaux), autrement je la mets, notamment pour ma bibliothèque personnelle de fonctions standards.

Reply

Marsh Posté le 25-12-2005 à 02:16:57    

cool ca, moi la seule option de gcc que je lui mets c'est -o [:dawao]

Reply

Marsh Posté le 25-12-2005 à 02:19:04    

[:pingouino]
 
Y a des tonnes d'autres options utiles, hein.
En vrac : -g, -pg, -O..., -c, -l, -I, -L, etc.

Reply

Marsh Posté le 25-12-2005 à 02:19:34    

pis jsuis sur que si je reprends n'importe quel prog que j'ai fais (autre que le hello hein [:dawao] ) ben en mettant ne serait ce que -Wall a gcc je  [:sisicaivrai] en voyant ce qu'il me renvoie dans le tronche  [:benou]

Reply

Marsh Posté le 25-12-2005 à 02:20:24    

bon a tout hasard t'orais pas une page ou je peux avoir un detail de tout ca? (oue j'ai toujours la flemme de chercher [:cupra])

Reply

Marsh Posté le 25-12-2005 à 02:21:18    

Raison de plus pour mettre cette option.
A quelques exceptions prêt, tous les warnings levés pointent sur des bugs ou des comportements douteux.
 
EDIT :  

gocho a écrit :

bon a tout hasard t'orais pas une page ou je peux avoir un detail de tout ca? (oue j'ai toujours la flemme de chercher [:cupra])


 
man gcc

Message cité 1 fois
Message édité par Elmoricq le 25-12-2005 à 02:21:38
Reply

Marsh Posté le 25-12-2005 à 02:24:24    

Elmoricq a écrit :

Raison de plus pour mettre cette option.
A quelques exceptions prêt, tous les warnings levés pointent sur des bugs ou des comportements douteux.
 
EDIT :  
 
 
man gcc


 
erf va falloir je reinstall linux en pensant a ca moi... [:sinking]  
M'a foutu un kernel panic violent l'autre jour alors j'l'ai delaisse  [:sisicaivrai]

Reply

Marsh Posté le 25-12-2005 à 10:11:02    

Pas besoin d'installer un *nix :  
http://www.googleityoumoron.com/googleit_image.gif

Reply

Marsh Posté le 25-12-2005 à 11:12:35    

Elmoricq a écrit :


-Werror bof par contre, je ne sais pas si ça a été résolu depuis, mais -Wall -Werror fait que certains warnings n'apparaissent plus du tout, un bug de gcc


 
corrigé avec la 4.0 si je ne m'abuse

Reply

Marsh Posté le 25-12-2005 à 13:19:40    

Cool ça =)
 
De toute façon ce n'est pas une option très importante, je trouve (pour celui pour qui le warning est autre chose que décorative, j'entends :o )

Reply

Marsh Posté le 25-12-2005 à 16:02:05    

Elmoricq a écrit :

Cool ça =)
 
De toute façon ce n'est pas une option très importante, je trouve (pour celui pour qui le warning est autre chose que décorative, j'entends :o )


 
Perso je m'en sers parce que je script toutes mes compil et que je parse la sortie de gcc pour toutes erreurs ou warning pour faire du post traitement dessus :o et etant feignant, -Werror m'a pris moins de temps a implenté que de rajouter une ligne dans le parser  :whistle:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed