Comment faire pour désactiver #pragma mises en garde?
Tout en développant une application C++, j'ai dû utiliser une 3ème partie de la bibliothèque qui a produit une énorme quantité de mises en garde liées à un danger directive #pragma utilisé.
../File.hpp:1: warning: ignoring #pragma ident
In file included from ../File2.hpp:47,
from ../File3.hpp:57,
from File4.h:49,
Est-il possible de désactiver ce genre de mises en garde, lors de l'utilisation du compilateur C++ de GNU?
Vous devez vous connecter pour publier un commentaire.
Je crois que vous pouvez compiler avec
de les supprimer.
Dans GCC compiler avec-Wno-inconnu-pragmas
En MS Visual Studio 2005 (cette question n'est pas balisé avec gcc, donc je suis en ajoutant ce pour référence), vous pouvez le désactiver à l'échelle mondiale dans les Paramètres de Projet->C/C++->Avancé. Entrez 4068 dans "Désactiver les Avertissements Spécifiques"
ou vous pouvez l'ajouter à n'importe quel fichier désactiver les avertissements localement
Peut-être voir GCC Diagnostic Pragmas? Sinon dans ce cas vous pouvez utiliser le combinaison d'options que
-Wall
permet, à l'exclusion de-Wunknown-pragmas
.Merci à vous tous pour l'astuce. Dans mon cas, je travaille avec Qt Mingw. J'ai besoin de définir le drapeau d'une autre manière, dans mon .PRO fichier:
Je sais que la question est à propos de GCC, mais pour les gens qui veulent le faire que de façon portable que possible:
La plupart des compilateurs qui peut émettre de la présente mise en garde ont un moyen pour désactiver l'avertissement de la ligne de commande (à l'exception de: IGP) ou dans le code (à l'exception de: DMC):
-Wno-unknown-pragmas
/#pragma GCC diagnostic ignored "-Wunknown-pragmas"
-Wno-unknown-pragmas
/#pragma clang diagnostic ignored "-Wunknown-pragmas"
-diag-disable 161
/#pragma warning(disable:161)
#pragma diag_suppress 1675
-wd4068
/#pragma warning(disable:4068)
--diag_suppress,-pds=163
/#pragma diag_suppress 163
--diag_suppress Pe161
/#pragma diag_suppress=Pe161
-w17
Vous pouvez combiner plus de cela dans une seule macro à utiliser dans votre code, qui est ce que j'ai fait pour le
HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS
macro dans Hedley:Noter que Hedley peut avoir des informations plus complètes que cette réponse car je vais sans doute oublier de mettre à jour cette réponse, donc si vous ne voulez pas de simplement utiliser Hedley (c'est un seul domaine public C/C++ - tête, vous pouvez facilement tomber dans le projet), vous pourriez vouloir utiliser Hedley comme un guide de la place de l'information ci-dessus.
La version contrôles sont probablement trop pessimiste, mais il est parfois difficile d'obtenir de bonnes infos à propos des versions obsolètes de propriété des compilateurs, et je préfère être sûr que désolé. Encore une fois, Hedley de l'information peut-être mieux.
De nombreux compilateurs peuvent également push/pop mises en garde sur une pile, de sorte que vous pouvez pousser, puis les désactiver avant y compris le code que vous n'avez pas de contrôle, puis de la pop donc votre code va encore déclencher l'alerte en question (de sorte que vous pouvez le nettoyer). Il y a des macros dans Hedley, trop:
HEDLEY_DIAGNOSTIC_PUSH
/HEDLEY_DIAGNOSTIC_POP
.