Comment supprimer des avertissements spécifiques dans g++

Je veux supprimer des avertissements spécifiques de g++. Je suis au courant du drapeau -Wno-XXX, mais je cherche quelque chose de plus spécifique. Je veux certains les avertissements dans -Weffc++, mais pas tous les d'entre eux. Quelque chose comme ce que vous pouvez faire avec lint - désactiver les messages spécifiques.

Existe-t-il un moyen intégré dans gcc pour le faire? Je dois écrire un script?

28
demandé sur Tom Zych 2009-01-28 13:13:30

4 réponses

Malheureusement, cette fonctionnalité n'est pas fournie par g++. Dans VC++, vous pouvez utiliser # pragma warning pour désactiver certains avertissements spécifiques. Dans gcc, le plus proche que vous pouvez avoir est pragmas de diagnostic , qui vous permettent d'activer / désactiver certains types de diagnostics pour certains fichiers ou projets.

19
répondu Luc Touraille 2009-01-28 12:55:58

Pour certains avertissements, il existe un commutateur de ligne de commande pour les désactiver. Pour savoir quel commutateur utiliser, passez-fdiagnostics-show-option à gcc.

10
répondu JesperE 2009-01-28 13:00:37

Vous pouvez simplement utiliser grep -v sur la sortie.

En fonction de l'avertissement que vous souhaitez désactiver, vous pouvez parfois corriger en code. Par exemple:

int main()
{
  int i;
}

génère: foo. cc: 4: avertissement: variable inutilisée ' i '

Alors que ce n'est pas le cas:

#define MARKUSED(X)  ((void)(&(X)))

int main()
{
  int i;
  MARKUSED(i);
}
2
répondu Mr.Ree 2009-01-28 15:26:53

Rediriger l'erreur standard vers un filtre qui supprime les choses que vous ne voulez pas voir. Par exemple, c'est mon fichier make:

Principal.o: main.rpc G++ -C-mur principal.cpp 2> & 1 / grep-v wunused-variable

2
répondu Boris Z 2013-03-09 23:03:32