Est l'aide de #pragma warning push/pop de la bonne façon de modifier temporairement le niveau d'avertissement?

De temps en temps c'est difficile d'écrire du code C++ qui ne serait pas émettre des avertissements à tous. Avoir des avertissements activé est cependant une bonne idée. Donc, il est souvent nécessaire de désactiver les avertissements autour de certains aspects spécifiques de la construction et leur permet dans tous les autres morceaux de code.

J'ai vu deux manières de le faire jusqu'à présent.

La première est d'utiliser #pragma warning( push ) et #pragma warning( pop ):

 #pragma warning( push )
 #pragma warning( disable: ThatWarning )
 //code with ThatWarning here
 #pragma warning( pop )

La seconde est d'utiliser #pragma warning( default ):

 #pragma warning( disable: ThatWarning )
 //code with ThatWarning here
 #pragma warning( default: ThatWarning )

Le problème que je vois dans la seconde variante est qu'elle ignore l'origine de niveau d'avertissement - l'avertissement peut avoir été éteint avant que, ou de son niveau d'avertissement peut avoir été modifié. À l'aide de default serait jeter ces modifications.

La première approche a l'air propre. Existe-il des problèmes avec elle? Sont-il de meilleures façons d'atteindre le même?

  • La portabilité, mais comme ce n'est taggés avec visual c++, ce n'est probablement pas un problème pour vous. Malheureusement, il ne semble pas la solution qui tombe n'importe où près de "ascetically plaire". Je vais toujours avec le push/pop méthode.
InformationsquelleAutor sharptooth | 2010-11-16