7
votes

Pointeur "La valeur calculée n'est pas utilisée" en fonction C

J'ai écrit une fonction qui raccourcit une chaîne (phrase de mots) à la longueur demandée. Je ne veux pas que la coupe de la phrase soit au milieu d'un seul mot. Donc, je saute des charps jusqu'à ce que j'atteigne un espace et couper la corde de phrase là-bas. Mon problème n'est pas vraiment un problème, la compilation de ma fonction crache un avertissement indiquant "Avertissement: la valeur calculée n'est pas utilisé", voir la ligne commentée dans le code. La fonction fonctionne comme prévu cependant. Donc, je suis aveugle, ou je suis assis à long de mon projet, je ne comprends pas cet avertissement. Quelqu'un pourrait-il me signaler la faille de la fonction? XXX

Mon compilateur sur la machine de développement est "Version GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu4)"


5 commentaires

Pourquoi avez-vous utilisé un si alors alors? (juste curieux)


En outre, il devrait vérifier p> s dans cette boucle (comme il le fait dans la seconde).


@BLAM: Parce que c'est alpha-code et pas encore vraiment propre. Oui, que "si" n'est pas nécessaire. Merci :-) @Lars: True, merci, je viens d'ajouter ça!


Dieu merci, le compilateur se plaint en fait ^^.


Vrai! C'est pourquoi j'ai toujours "-wall" basculer avec des commandes de compilation pendant le développement!


3 Réponses :


7
votes

* p - est identique à celui * (p -) .

La décrément est évaluée, alors votre désarférence le résultat de cela. Vous ne faites rien avec ce résultat, d'où l'avertissement. Vous obtiendriez le même avertissement si vous venez de dire * p .


3 commentaires

Je savais que c'était si simple :-) ... Désolé, j'aurais dû examiner que moi-même, parfois ce n'est pas facile de voir la forêt à cause de tous les arbres ...


Remarque: le résultat de la décrément est la valeur d'origine du pointeur.


J'ai oublié cela récemment. Remplacé char * p avec char ** p et modifié p ++ dans * p ++ ; attendait (* p) ++ , mais cette réponse m'a redressée. A fini par changer de * p = * p + 1 pour plus de clarté.



3
votes

Vous venez de le faire pour l'effet secondaire

            *p--;
  • Effet secondaire: Décrément P Li>
  • Valeur de l'expression: valeur pointée par p li> ul>

    Le compilateur vous avertit que la valeur de l'expression n'est pas utilisée: -) p> p>


0 commentaires

13
votes

L'avertissement est dû au * (Dréréférence) - vous n'utilisez pas la valeur déréférencée nulle part. Il suffit de le faire: xxx

et l'avertissement devrait disparaître.


0 commentaires