Quel indicateur fait taire l'avertissement de GCC concernant l'absence de nouvelle ligne lors de la fin des fichiers?

StackOverflow https://stackoverflow.com/questions/282851

  •  08-07-2019
  •  | 
  •  

Question

Je viens de lire ce message sur les raisons pour lesquelles new- Il existe des avertissements en ligne, mais pour être honnête, mon équipe a des personnes travaillant sur plusieurs plates-formes différentes et avec plusieurs éditeurs différents (tout le monde utilise ce qui se passe de mieux en mieux), de sorte que cet avertissement est devenu omniprésent et qu'il n'est pas vraiment un avertissement à prendre en charge. devenir du bruit et rend la recherche d’avertissements sérieux un problème.

Bien souvent, des avertissements importants sont passés inaperçus car les gens s'habituaient à laisser passer un tas d'avertissements inutiles. Ils ont donc cessé de les regarder attentivement et avec raison. On pourrait dire que dans notre cas, GCC pleure trop le loup pour que quiconque puisse le prendre au sérieux, ce qui est une mauvaise attitude mais une nature humaine.

Pour le moment, nous compilons avec -Wall , car nous voulons des avertissements, mais existe-t-il un marqueur pour éviter les avertissements de nouvelle ligne?

Remarque: J'ai parcouru un peu le manuel mais je n'ai pas trouvé la réponse évidente, alors j'ai abandonné.

Remarque: En réponse à la solution tout à fait raisonnable de Robert Gamble, notre code est multiplate-forme. Nous avons des utilisateurs et nous exploitons Linux, Solaris et Windows. La nouvelle ligne n'est donc pas sous consensus. Et le compilateur de Quelqu'un va toujours pleurer loup. Parce qu'il y a plus de 40 développeurs, et d'autres non-programmeurs.

Était-ce utile?

La solution

Il n'y en a pas, à ma connaissance, j'utilise GCC depuis des années.

Mise à jour: Aucun avertissement ne doit être émis avec la norme C ++ 11. Q connexe

Autres conseils

En supposant que vous utilisiez un système de contrôle de code source, vous pouvez ajouter un point d'ancrage de pré-validation garantissant que les fichiers texte se terminent par une nouvelle ligne. De plus, selon le système de contrôle de source utilisé, vous pouvez ajouter un crochet de pré-validation qui répare en réalité la fin de la ligne si elle n’est pas présente.

Pourquoi ne vous contentez-vous pas de vous assurer que vos fichiers ont une nouvelle ligne comme ils sont supposés l'être? Cela devrait être un simple changement de configuration dans les éditeurs incriminés et semble être un moyen assez facile de "mettre en silence" l'avertissement.

-Wno-eof-newline

Ceci a été ajouté avec le correctif pour bug 14331 de gcc

Assez curieusement, je ne peux pas réellement demander à gcc de générer un avertissement concernant les sauts de ligne manquants. Je suppose que les nouvelles versions ont complètement renoncé à cet avertissement.

Je peux obtenir que gcc accepte -Wno-eof-newline , mais il se plaint d’indicateurs non reconnus lorsque j’essaie -Weof-newline . C ++ 11 a supprimé l'exigence de nouvelles lignes à la fin des fichiers, mais pour écrire du code portable dans les anciennes normes, il devrait vraiment être possible d'activer de tels avertissements pédant.

Heureusement, clang prend toujours en charge les diagnostics concernant les sauts de ligne manquants: cet avertissement peut être activé avec -Wnewline-eof dans tous les modes, ou dans les modes C ++ 11 et supérieurs, il peut également être activé avec -Wc ++ 98-compat-pedantic .

Ces avertissements sont désactivés par défaut, mais si vous tirez parti de l'indicateur -Weverything de clang pour activer une stratégie 'soustractive' de contrôle des avertissements, vous pouvez utiliser les modes C ++ 11 et supérieurs. besoin à la fois -Wno-newline-eof et -Wno-c ++ 98-compat-pedantic pour désactiver l'avertissement.

Je suis sûr à 90% qu'il n'y a pas d'argument à faire pour désactiver cette option.

La raison de l'avertissement est que les fichiers sans ligne de fond ont un comportement indéfini lors de la compilation:

Voir norme: http://c0x.coding-guidelines.com/5.1.1.2.html

Voici un article de blog contenant du code python (que je n'ai pas encore essayé) qui indique qu'il corrigera les fichiers source avec ce problème.

http://www.johndcook.com/blog/tag/gcc/

Ajouter un point d'ancrage à votre contrôle de code source qui n'autorisera pas l'enregistrement de code tant que la nouvelle ligne n'aura pas été ajoutée?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top