web-dev-qa-db-fra.com

Dans gcc, comment désactiver l'avertissement -fpermissive?

J'inclus un fichier d'une bibliothèque tierce qui génère une erreur qui peut être rétrogradée en un avertissement avec -fpermissive. Mais parce que je ne veux pas "polluer" mon journal de compilation avec ces avertissements, je veux désactiver complètement ces messages.

Jusqu'à présent, j'ai défini le -fpermissive option avec un diagnostic pragma lors de l'inclusion du fichier; quelque chose comme:

#pragma GCC diagnostic Push
#pragma GCC diagnostic warning "-fpermissive"

#include <third-party-file.h>

#pragma GCC diagnostic pop

Étant donné que gcc fournit généralement une version "positive" et "négative" du -f flags, j'ai pensé à ignorer la fonction "non permissive":

#pragma GCC diagnostic ignored "-fno-permissive"
#include <third-party-file.h>

Mais il ne semble pas y avoir de version "négative" du -fpermissive flag (j'utilise gcc 4.6.3; mais même la version 4.7.0 ne l'a pas ).

Y a-t-il une chance que je puisse imiter ce comportement? Merci!

22
piwi

tldr: Vous ne pouvez pas désactiver la sortie fpermissive après GCC 4.7.


Il suffit de poster ceci ici pour qu'il ait plus de visibilité: malheureusement, la réponse de zwol (bien que bien intentionnée et potentiellement utile à ceux qui ont des versions plus anciennes de GCC) ne fonctionne pas pour les versions plus récentes de GCC. À partir de GCC 4.8 et au-delà, vous ne pouvez pas désactiver la sortie fpermissive. o11c dans son commentaire à l'OP fournit utilement le bug suivant qui suit cela:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81787

Notez qu'il est dans l'état "RÉSOLU INVALIDE", donc l'impossibilité de le désactiver est le comportement attendu et il n'est pas prévu de le changer.

8
firebush

Il est peut-être un peu tard pour cela, mais l'un d'eux devrait faire ce que vous vouliez:

#pragma GCC diagnostic ignored "-fpermissive"

ou

#pragma GCC diagnostic ignored "-pedantic"

"ignoré" est la façon dont vous réduisez complètement un diagnostic, et l'inverse de -fpermissive est -pedantic, pour des raisons historiques.

12
zwol