warnings: listes chainée [résolu] - C - Programmation
Marsh Posté le 08-03-2007 à 21:51:03
Ca veut dire qu'il existe des chemins d'execution tels que tu lises la valeur d'une variable qui n'a pas ete initialisee...
Et au fait, "triee" en anglais, c'est "sorted"
Marsh Posté le 09-03-2007 à 16:47:18
Ace17 a écrit : Ca veut dire qu'il existe des chemins d'execution tels que tu lises la valeur d'une variable qui n'a pas ete initialisee... |
Mais comment résoudre ça ?
ça n'influence pas sur l'exécution du prog aparement !
Marsh Posté le 09-03-2007 à 18:38:28
bad___day a écrit : Mais comment résoudre ça ? |
La façon barbare, c'est d'initialiser la variable avec une valeur étrange (si c'est un pointeur, (void*) -1, par exemple) et de voir quand ça pète...
Marsh Posté le 10-03-2007 à 20:15:19
bad___day a écrit : ça n'influence pas sur l'exécution du prog aparement ! |
Evidemment, conceptuellement ça peut pas planter. Même si la boucle "for" de la ligne 145 ne s'exécute pas parce que la condition sort immédiatement => t'auras "q" non initialisé mais tu ne passeras pas dans le "else" des lignes 157 car t'auras "A == tete". Mais ça, le compilo ne le voit pas d'où le warning (risque de plantage si tu passes dans le "else" ).
Bien que algorithmiquement parlant ça ne puisse pas planter, le compilo ne le voit pas (il faudrait qu'il analyse que tu mets "A=tete" en ligne 145 puis que pour ça plante il faudrait que "A" soit différent de "tete" et ce genre d'analyse est trop complexe pour lui)...
bad___day a écrit : Mais comment résoudre ça ? |
Comment résoudre le warning ? faut initialiser "q" de façon non ambigüe.
Marsh Posté le 08-03-2007 à 20:39:27
Salut,
j'ai essayer de faire un bout de programme qui construit deux listes chaînée (unidirectionnelle) de telle sorte que la liste chaînée soit trier à chaque fois que l'utilisateur rentre une valeur ( la valeur contenu dans le champ info d'un élément de la liste chainée).
et ensuite je fait une simple fusion des deux listes dans une autre liste.
tout marche normalement bien et tout (je n'ai pas essayer les cas spéciales),
le problème c'est qu'a la compilation, mon compilateur (gcc) me signle deux warning:
Project : Console application
Compiler : GNU GCC Compiler (called directly)
Directory : C:\Documents and Settings\Simple plan\Bureau\liste ch essaye\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.c
main.c: In function `MakeTriedListe':
main.c:127: warning: 'q' might be used uninitialized in this function
main.c: In function `FusionListes':
main.c:56: warning: 'q' might be used uninitialized in this function
Linking console executable: C:\Documents and Settings\Simple plan\Bureau\liste ch essaye\console.exe
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 2 warnings
et je n'arrive pas à vraiment trouvé l'origine de ces warning.
voici tout le code source:
merci
Message édité par bad___day le 14-03-2007 à 16:00:54