7
votes

Supprimer "EXTRA"; "" erreur dans GCC lorsque -pedantic est sur

Je construit mon programme avec -pedantic drapeau, qui provoque une erreur extra ';' (en raison d'un en-tête tiers utilisant de quelques macros de manière incohérente; L'erreur n'est pas affichée lorsque -pedantic est éteint). Je n'ai pas vraiment envie de tourner -pedantic éteint, et je ne veux pas non plus éditer l'en-tête. Y a-t-il un moyen de supprimer cette erreur exacte? Comme un -wno-gênant-Error-Error Compiler ou quelque chose?


4 commentaires

Pourquoi voulez-vous utiliser Pedantic? En regardant gcc.gnu.org/ OnLineDocs / GCC-4.4.3 / GCC / ... Il semble qu'il n'y a aucun moyen de faire ce que vous voulez. Sûrement si l'utilisation de Pedantic est simplement basée sur un sentiment, vous êtes meilleur sans elle ;-)


Eh bien, non seulement sentiment :) Il y a de fortes recommandations que je dois suivre


Hmmm délicat. Je suppose que l'en-tête tiers est open source? Avez-vous des chances de la fixer?


En fait, c'est une source ouverte, alors je suppose que je vais essayer de contacter l'auteur. Eh bien, il semble qu'il n'y ait pas de solution de contournement rapide pour l'instant ... :)


3 Réponses :


0
votes

La solution de contournement est de supprimer -pedantic . Rien d'autre ne marchera sur cette affaire.


2 commentaires

@Kylestrand n'est pas réellement "buggy", mais pas tout à fait correct, non plus. Je ne me souviens pas de quelle bibliothèque m'a causé ce problème il y a quatre ans, mais il y avait une magie macro qui conduit à ce problème.


@Romandmitrienko J'ai même trouvé ce fonctionnement sur Catch2 qui se développe continuellement sous les nouveaux stimules qu'il est si ennuyeux



5
votes

Utilisez -Isystem plutôt que -I Lorsque vous comprenez les chemins, la GCC ne vous avertira pas sur les en-têtes du système.

Pour les en-têtes que vous entretenez, modifiez-les simplement.


1 commentaires

N'a pas travaillé pour moi. Inclus la bibliothèque avec -System mais les avertissements ont toujours été lancés pour le compilateur de la pomme de Linux-> Apple, mais cela fonctionne certainement pour g ++ et clang



7
votes

Vous pouvez supprimer des avertissements pédantants pour les en-têtes externes, comme celui-ci:

//save compiler switches
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"

//Bad headers with problem goes here
#include <ros/ros.h>
#include <sensor_msgs/LaserScan.h>

//restore compiler switches
#pragma GCC diagnostic pop


0 commentaires