344 votes

Pourquoi dois-je toujours activer les avertissements du compilateur ?

J'entends souvent dire que lorsque je compile des programmes C et C++, je dois "toujours activer les avertissements du compilateur". Pourquoi cela est-il nécessaire ? Comment dois-je m'y prendre ?

Parfois, j'entends aussi dire que je devrais "traiter les avertissements comme des erreurs". Devrais-je le faire ? Comment dois-je m'y prendre ?

6voto

Jim In Texas Points 775

J'ai travaillé un jour pour une grande entreprise (Fortune 50) qui fabriquait des équipements de test électronique.

Le produit principal de mon groupe était un programme MFC qui, au fil des ans, en est venu à générer littéralement des centaines d'avertissements. Qui étaient ignorés dans presque tous les cas.

C'est un véritable cauchemar lorsque des bugs surviennent.

Après ce poste, j'ai eu la chance d'être embauché comme premier développeur dans une nouvelle startup.

J'ai encouragé une politique de "non avertissement" pour toutes les constructions, avec des niveaux d'avertissement du compilateur réglés pour être assez bruyants.

Notre pratique consistait à utiliser #pragma warning - push/disable/pop pour le code dont le développeur était sûr qu'il était vraiment bon, ainsi qu'une déclaration de journal au niveau du débogage, juste au cas où.

Cette pratique a bien fonctionné pour nous.

1 votes

Secondé. #pragma warning ne se contente pas de supprimer les avertissements, il sert le double objectif de communiquer rapidement aux autres programmeurs que quelque chose est intentionnel et non accidentel, et agit comme une balise de recherche pour localiser rapidement les zones potentiellement problématiques lorsque quelque chose se casse mais que la correction des erreurs/alertes ne le résout pas.

0 votes

Tu as raison Justin, c'est exactement comme ça que je voyais l'avertissement #pragma.

6voto

S.S. Anne Points 13829

Vous devriez toujours activer les avertissements du compilateur car celui-ci peut souvent vous dire ce qui ne va pas dans votre code. Pour ce faire, vous passez -Wall -Wextra au compilateur.

Vous devez généralement traiter les avertissements comme des erreurs, car les avertissements signifient généralement que quelque chose ne va pas dans votre code. Cependant, il est souvent très facile d'ignorer ces erreurs. Par conséquent, les traiter comme des erreurs fera échouer la compilation et vous ne pourrez pas les ignorer. Pour traiter les avertissements comme des erreurs, passez -Werror au compilateur.

5voto

Fizik26 Points 533

Les avertissements du compilateur en C++ sont très utiles pour certaines raisons.

1 - Il permet de vous montrer où vous pouvez avoir fait une erreur qui peut impacter le résultat final de vos opérations. Par exemple si vous n'avez pas initialisé une variable ou si vous avez mis "=" au lieu de "==" (ce ne sont que des exemples).

2 - Il permet aussi de vous montrer où votre code n'est pas conforme à la norme du c++. C'est utile car si le code est conforme à la norme actuelle, il sera facile de déplacer le code vers une autre plateforme par exemple.

En général, les avertissements sont très utiles pour vous montrer où vous avez des erreurs dans votre code qui peuvent affecter le résultat de votre algorithme ou prévenir certaines erreurs lorsque l'utilisateur utilisera votre programme.

5voto

josyb Points 129

Un avertissement est une erreur qui risque de se produire. Vous devez donc activer les avertissements du compilateur et mettre de l'ordre dans votre code pour supprimer tout avertissement.

5voto

Kirk Augustin Points 79

Ignorer les avertissements signifie que vous avez laissé du code bâclé qui non seulement pourrait causer des problèmes à l'avenir pour quelqu'un d'autre, mais qui rendra également les messages de compilation importants moins remarqués par vous. Plus la sortie du compilateur est importante, moins les gens remarqueront ou s'inquiéteront. Plus c'est propre, mieux c'est. Cela signifie également que vous savez ce que vous faites. Les avertissements sont très peu professionnels, négligents et risqués.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X