J'ai un projet qui utilise log4cxx, boost, etc. les bibliothèques dont les en-têtes de générer beaucoup de (répétitif) avertissements. Est-il un moyen de supprimer les mises en garde de la bibliothèque comprend (c #include <quelques-d'en-tête.h>) ou comprend de certains chemins d'accès? J'aimerais à -Mur et/ou -Wextra comme d'habitude sur le projet de code sans informations pertinentes soient masquées. J'utilise actuellement un grep sur faire une sortie, mais j'aimerais quelque chose de mieux.
Réponses
Trop de publicités?Vous pouvez utiliser des pragmas. Par exemple:
// save diagnostic state
#pragma GCC diagnostic push
// turn off the specific warning. Can also use "-Wall"
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_generators.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <boost/lexical_cast.hpp>
// turn the warnings back on
#pragma GCC diagnostic pop
#pragma
sont des instructions pour le compilateur. vous pouvez mettre quelque chose avant les #include et le désactiver après.
Vous pouvez également le faire en ligne de commande.
Un autre GCC page spécialement sur la désactivation des avertissements.
Je voudrais aller pour l'option de l'utilisation de #pragma dans le code source, puis en fournissant un son motif (dans un commentaire) de pourquoi vous désactivez les mises en garde. Cela signifierait raisonnement sur les en-têtes de fichiers.
GCC approches par classer les types d'avertissement. Vous pouvez les classer à des avertissements ou pour être ignoré. Précédemment lié articles vous montrera les avertissements sont peut-être désactivée.
Remarque: vous pouvez aussi masser le code source afin de prévenir certains des avertissements à l'aide des attributs; toutefois, cette liaison vous de très près à la GCC.
Note2: GCC utilise également le pop/push interface utilisée dans microsoft compilateur -- Microsoft désactive les avertissements par le biais de cette interface. Je vous suggère d'examiner cette question plus , comme je ne sais pas si c'est encore possible.
Vous pouvez essayer d'utiliser les en-têtes précompilés. Mises en garde ne va pas disparaître, mais au moins de ne pas s'afficher dans votre compilation.