compiling

Comment d├ęsactiver l'affichage des notes pour les erreurs dans g++?

Lors de la compilation,les erreurs sont souvent accompagnées d'une longue série de notes (cyan).Existe-t-il un drapeau g++permettant de désactiver cette fonction et de n'afficher que l'erreur elle-même ?

Le compilateur ne le fera pas pour vous, mais (jusqu'à présent...) les développeurs du compilateur suivent une convention de longue date (plus de 30 ans) adaptée d'autres compilateurs qui donne les informations essentielles sur la première ligne, en utilisant error: ou warning: pour marquer l'avertissement. Si vous grep stderr pour ceux-ci, vous verrez les informations minimales d'avertissement/d'erreur.

grep est un bon point de départ (et la sortie "grep -n" est utile en soi). Ces messages suivent un modèle de nom de fichier, numéro de ligne, message commun à plusieurs outils. Je l'ai utilisé dans vi-like-emacs ici .

Assez récemment (en 2014), gcc/g++ a commencé à ajouter une "pile d'appel" aux messages, ce qui donne des informations supplémentaires. Cela repose sur une modification du préprocesseur pour suivre les numéros de ligne qui peuvent être désactivés avec une option -P (notée ici ), mais cela semble être incomplètement intégré sous une forme qui supprimerait la pile d'appel.

L'utilisation de clang n'aiderait pas beaucoup avec cela; il peut aussi être très verbeux. Le développement de gcc/g++ a ajouté beaucoup de messages comme indiqué ici .




Lors de la compilation, les erreurs sont souvent accompagnées d'une longue trace (cyan). Existe-t-il un indicateur g++ pour désactiver cela, n'affichant que l'erreur elle-même ?

  • Vous pouvez utiliser un ancien outil qui n'est plus pris en charge comme STLFilt .

  • Vous pouvez passer à Clang , ou l'utiliser pour signaler uniquement les erreurs et effectuer votre compilation finale dans GNU g++ .

  • Vous pouvez vous familiariser avec le STL,ce qui facilitera le décryptage.

    Une bonne compréhension de la STL et de son utilisation vous aidera à éviter de nombreuses erreurs en premier lieu. Deuxièmement, les messages d'erreur font souvent référence à des fonctions dans la source STL - si vous avez une idée approximative de la façon dont la STL est implémentée, cela peut être extrêmement utile pour déchiffrer le sujet du message d'erreur. Les dernières versions du compilateur g++ améliorent parfois la sortie, la rendant plus utile et moins verbeuse.

Ce n'est pas exactement ce que vous voulez mais ça peut raccourcir la sortie :

  • Utilisez l' indicateur -fmax-errors ou l'option -Wfatal-errors :

    -fmax-errors=n

    Limite le nombre maximum de messages d'erreur à n, auquel cas GCC se retire plutôt que d'essayer de continuer à traiter le code source. Si n vaut 0 (valeur par défaut), il n'y a pas de limite au nombre de messages d'erreur générés. Si -Wfatal-errors est également spécifié, alors -Wfatal-errors a priorité sur cette option.

    -Wfatal-errors

    Cette option permet au compilateur d'interrompre la compilation à la première erreur survenue plutôt que d'essayer de continuer et d'imprimer d'autres messages d'erreur.