Quelles sont les conséquences de l'ignorer: warning: unused parameter
Je suis en train de travailler sur un projet C++ et j'ai remarqué que nous avons un certain nombre de mises en garde sur les paramètres inutilisés.
Quel effet cela pourrait-il avoir si ces avertissements sont ignorés?
Vous devez vous connecter pour publier un commentaire.
La fonction avec un paramètre inutilisé peut avoir un réel bug dans les cas suivants:
Il y a un sortie paramètre, qui n'est pas attribué ou écrite dans, résultant en une valeur non définie pour l'appelant.
L'un des paramètres est un rappel de la fonction de pointeur, ce qui vous devez appeler et d'oublier de le faire. Peut se produire s'il y a beaucoup de
#ifdef
s dans la fonction.Vous déclarez une variable locale avec le même nom que les ombres d'un paramètre et utilisez ensuite la valeur faux dans la fonction.
Pas à l'aide d'un entrée paramètres peut être inoffensifs, mais vous pouvez réduire le bruit pour voir des avertissements utiles en marquant d'entrée inutilisés paramètres explicitement au début de la fonction par un moulage
void
(fonctionne en C et en C++):Ou,
Ou d'omettre le nom du paramètre (C++ seulement):
do..while
wrapper.do while
ici? Il semble inutilement verbeux, quand(void) expr;
serait faire exactement la même chose. Ou est-il une différence?Si vous avez un tas de peu d'importance que les avertissements ne sont pas importantes pour vous, vous pouvez ignorer l'avertissement important sur la ligne de code que vous venez d'écrire qui se cache au milieu d'eux.
Pour gcc manière spécifique pour désactiver l'avertissement, vous pouvez utiliser
__attribute__((unused))
commePour ignorer le second paramètre. Si votre programme s'appuie sur GCC technologies déjà, vous pouvez utiliser cet attribut pour être 100% sûr à partir de ce genre d'avertissement.
Cela signifie que vous avez écrit une fonction qui prend un paramètre, mais n'utilisez pas le paramètre. C'est inoffensif, mais il peut indiquer des bugs dans certains cas.
Généralement, vous pouvez le silence de cet avertissement en supprimant le nom du paramètre, laissant anonyme, mais qui peut ne pas être souhaitable en fonction du paramètre n'est pas utilisé.
Je vous suggère de désactiver l'avertissement, s'il est difficile de trouver les vrais problèmes.
En C++, vous pouvez avoir des arguments par défaut:
Vous pouvez également avoir d'argument supplémentaire:
Si vous avez un paramètre, vous n'êtes pas à l'aide de et ce n'est pas par défaut, vous devriez recevoir un avertissement parce que vous demandez au programme pour passer des valeurs à la pile qui ne sont pas référencés, et, par conséquent, est en train de faire plus de travail qu'il ne le devrait.
Peut-être que cela signifie que vous avez oublié une partie de la logique de la fonction, trop.
Aucun. à l'exception de [EDIT]: comme d'autres l'ont souligné, Vous pourriez avoir une non attribuées au paramètre de sortie.
Vous devriez les nettoyer, car à plusieurs reprises j'ai vu des développeurs ignorer les avertissements importants qui ont été "cachés", parmi un grand nombre d'avertissements, et ils étaient tellement habitués à voir des avertissements qu'ils n'ont jamais payé aucune attention à eux. J'essaie d'avoir zéro avertissements à tout moment, et définissez les avertissements du compilateur pour le niveau maximum.
Cela dépend de si vous avez l'intention d'utiliser les paramater. E. g.
Dans le présent code "taille" n'est pas utilisé, et au lieu de la constante "Taille" est utilisé. Si l'avertissement sera de mettre en lumière des problèmes de ce type pour vous.
Toutefois, si vous n'avez jamais mis en retrait pour utiliser le paramètre puis il devrait être retiré de la signature de la méthode. Sauf si vous avez besoin pour correspondre à la signature d'une méthode virtuelle, ou un pointeur de fonction, si c'est le cas, alors vous n'avez pas la possibilité de le retirer.
Si une méthode n'utilise pas un paramètre alors la première question qui se pose est que pourquoi est-ce paramètre une partie de la signature de la méthode dans la première place. Ces avertissements ne de sens étant donné que c'est un mauvais design que ce sont des référence et de plus, il y a un peu de surcharge ainsi que chaque fois que cette méthode est appelé, ce paramètre est poussé sur la pile, le mieux est de revoir la méthode et de supprimer ces paramètres qui ne sont pas de toute utilisation.
Après avoir dit que, de laisser ces paramètres ne marche pas mal à un lot, sauf pour un peu les frais généraux que j'ai mentionné.