Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1884 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Liste chainée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Liste chainée

n°1272633
duranton
Posté le 23-12-2005 à 16:35:26  profilanswer
 

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)  
 
 
 
 

mood
Publicité
Posté le 23-12-2005 à 16:35:26  profilanswer
 

n°1272636
Joel F
Real men use unique_ptr
Posté le 23-12-2005 à 16:37:40  profilanswer
 

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

n°1272637
Taz
bisounours-codeur
Posté le 23-12-2005 à 16:38:10  profilanswer
 

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

n°1272643
blackgodde​ss
vive le troll !
Posté le 23-12-2005 à 16:42:53  profilanswer
 

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 )-
n°1272691
duranton
Posté le 23-12-2005 à 18:11:34  profilanswer
 

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

n°1272697
Elmoricq
Modérateur
Posté le 23-12-2005 à 18:49:44  profilanswer
 

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
n°1272699
Joel F
Real men use unique_ptr
Posté le 23-12-2005 à 18:50:27  profilanswer
 

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
n°1272793
duranton
Posté le 24-12-2005 à 00:47:02  profilanswer
 

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

n°1272797
in_your_ph​ion
Posté le 24-12-2005 à 01:21:21  profilanswer
 

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
n°1272799
gocho
Posté le 24-12-2005 à 01:42:05  profilanswer
 

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
mood
Publicité
Posté le 24-12-2005 à 01:42:05  profilanswer
 

n°1272800
Pillow
'cos the trees won't talk
Posté le 24-12-2005 à 01:43:31  profilanswer
 

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
n°1272801
gocho
Posté le 24-12-2005 à 01:48:23  profilanswer
 

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]

n°1272805
Pillow
'cos the trees won't talk
Posté le 24-12-2005 à 03:17:21  profilanswer
 

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

n°1272817
Joel F
Real men use unique_ptr
Posté le 24-12-2005 à 09:42:38  profilanswer
 

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

n°1272846
Elmoricq
Modérateur
Posté le 24-12-2005 à 11:42:07  profilanswer
 

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
n°1272930
duranton
Posté le 24-12-2005 à 15:53:36  profilanswer
 

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.

n°1272964
in_your_ph​ion
Posté le 24-12-2005 à 17:09:07  profilanswer
 

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:  
 
 

n°1272967
Elmoricq
Modérateur
Posté le 24-12-2005 à 17:12:00  profilanswer
 

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]

n°1273029
gocho
Posté le 24-12-2005 à 21:41:30  profilanswer
 

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])

n°1273052
Elmoricq
Modérateur
Posté le 25-12-2005 à 01:14:20  profilanswer
 

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.

n°1273057
gocho
Posté le 25-12-2005 à 02:16:57  profilanswer
 

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

n°1273058
Elmoricq
Modérateur
Posté le 25-12-2005 à 02:19:04  profilanswer
 

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

n°1273059
gocho
Posté le 25-12-2005 à 02:19:34  profilanswer
 

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]

n°1273060
gocho
Posté le 25-12-2005 à 02:20:24  profilanswer
 

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])

n°1273061
Elmoricq
Modérateur
Posté le 25-12-2005 à 02:21:18  profilanswer
 

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
n°1273063
gocho
Posté le 25-12-2005 à 02:24:24  profilanswer
 

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]

n°1273099
Elmoricq
Modérateur
Posté le 25-12-2005 à 10:11:02  profilanswer
 

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

n°1273105
Joel F
Real men use unique_ptr
Posté le 25-12-2005 à 11:12:35  profilanswer
 

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

n°1273113
Elmoricq
Modérateur
Posté le 25-12-2005 à 13:19:40  profilanswer
 

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 )

n°1273145
Joel F
Real men use unique_ptr
Posté le 25-12-2005 à 16:02:05  profilanswer
 

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:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Liste chainée

 

Sujets relatifs
[Liste Chainée]tête de liste chainée
Affectation d'une valeur à un élément d'une liste chainéeProblème liste chainée
probleme avec liste chainéeProblème de Procedure avec liste chainée et fichier
liste chainée et traitemenbts de fichierPbs structure en liste chainée et manip de fichier
liste chainee dynamique sur plusieurs threadsPile d'objets en liste chaînée avec persistance des données ???
Plus de sujets relatifs à : Liste chainée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR