Bah justement je suis sur un tout autre programme et je le débug grâces aux bienfaits du Wall (et compagnie).
Et là, je me suis retrouvé dans une situation ambigüe.
Que faire quand les warnings et errors ne veulent plus rien dire ?
Quand j'ai un warning qui ne correspond à rien. Par exemple, qui prétend qu'il y a une erreur de syntaxe alors qu'il n'y en a pas.
En fait, une fois que mon fichier header est retiré, le compilateur ne voit plus ces fausses erreurs de syntaxe... seulement j'ai besoin de ce header.
J'en ai d'abord déduit que l'erreur de syntaxe se trouvait dans mon header. Mais ce n'est pas le cas. Il n'y a aucune erreur de syntaxe nulle part.
Je tombe par exemple sur des erreurs comme ça :
gere_list.c:66: warning: ISO C forbids nested functions
gere_list.c:66: error: expected '=', ',', ';', 'asm' or '__attribute__' before '->' token
gere_list.c:66: error: expected expression before '->' token
Et des erreurs du genre, même si dans le header et dans le fichier en question la suite de caractère '->' n'apparait jamais.
Naturellement, si je déplace la fonction qui débute en ligne 66 ailleurs, il trouve un autre bouc émissaire, une autre fonction même dans un autre fichier.
La solution que j'ai trouvé, c'est de déplacer certains headers term.h, termios.h, sys/ioctl.h et de les mettre uniquement dans le fichier qui en avait besoin, plutôt que dans le header général.
Une fois que ceci est fait, j'ai une compilation sans erreurs ni warnings.
Et maintenant que j'y pense, ce n'est pas la première fois que j'ai ce genre de saletés qui apparaissent quand j'inclus ces fichiers.
Vous avez une idée de à quoi sont dû ces warnings ? Qu'est-ce qui peut biaiser le compilateur à ce point ?