Comment élever avertissement si la valeur de retour est ignorée?

J'aimerais voir toutes les endroits dans mon code (C++) qui ne tiennent pas compte de la valeur de retour d'une fonction. Comment puis-je le faire - avec gcc ou statique outil d'analyse de code?

Mauvais exemple de code:

int f(int z) {
    return z + (z*2) + z/3 + z*z + 23;
}


int main()
{
  int i = 7;
  f(i); /////<<----- here I disregard the return value

  return 1;
}

Veuillez noter que:

  • il devrait fonctionner même si la fonction et son utilisation sont dans des fichiers différents
  • gratuit statique l'outil de vérification
  • Cela permettra d'imprimer beaucoup de mises en garde si vous utilisez printf par exemple.
  • Le "probable" raison, il ne peut pas être exécutée via la ligne de commande, c'est que si vous avez une raison valable pour ignorer un résultat, alors vous vous retrouvez avec la nécessité d'attribuer un "unused variable", qui devrait générer un avertissement. Par exemple, vous ne voulez certainement pas T& operator=(T rhs); pour vous forcer à récupérer le résultat 😉
  • M: Vous n'avez pas besoin d'allouer une variable muette quand vous voulez ignorer la valeur de retour d'une fonction. Tout simplement jeté l'appel à la fonction nulle, comme dans (void) function_returning_a_val();. Lors de la lecture du code, cela rend également plus claire que vous ignorer volontairement la valeur de retour.
  • [[nodiscard]] en C++17.
  • Depuis cela ressemble le plus ancien et le plus upvoted question sur ce sujet, j'ai ajouté une mise à jour de réponse couvrant C++17.
InformationsquelleAutor Drakosha | 2010-01-11