Vu le code suivant:-Wundef n'est pas ignorée avec pragma en g ++
#if MACRO_WITHOUT_A_VALUE
int var;
#endif
int main(){}
Lors de la compilation avec, g++ -std=c++1z -Wundef -o main main.cpp
,
il produit l'avertissement suivant:
main.cpp:1:5: warning: "MACRO_WITHOUT_A_VALUE" is not defined [-Wundef]
#if MACRO_WITHOUT_A_VALUE
^
Je voudrais pour conserver l'indicateur d'avertissement activé, mais supprimez cette instance particulière.
J'applique les éléments suivants:
#ifdef __GNUC__
#pragma GCC diagnostic ignored "-Wundef"
#pragma GCC diagnostic push
#endif
#if MACRO_WITHOUT_A_VALUE
int var;
#endif
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif
int main(){}
Cela résout uniquement le problème dans clang++
. La commande clang++ -std=c++1z -Wundef -o main main.cpp
est créée sans avertissement.
La commande g++ -std=c++1z -Wundef -o main main.cpp
utilise le même avertissement [-Wundef]
que précédemment.
Comment puis-je supprimer les avertissements -Wundef
dans g++
?
g++ (Ubuntu 5.1.0-0ubuntu11~14.04.1) 5.1.0
clang version 3.8.0
Pouvez-vous utiliser '#if defined (MACRO_WITHOUT_A_VALUE) && MACRO_WITHOUT_A_VALUE'? – Ryan
Peut-être, mais je suis en train d'emballer un code tiers que je préfère ne pas modifier. –
Enveloppez-le dans '# ifdef' à la place alors? – Ryan