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?
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.
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.
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);
}
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