2010-11-27 6 views
7

J'utilise MSVC avec un projet CMaked. Par conséquent, j'ai activé de nombreux indicateurs sur MSVC qui étaient activés pour gcc et clang. Cependant, le niveau d'avertissement/Wall me donne un peu de mal; il m'avertit de toutes sortes de choses dans les en-têtes inclus, comme les en-têtes stdio.h et boost. Existe-t-il un moyen d'empêcher MSVC de m'avertir de certaines choses dans les en-têtes? J'aime mes niveaux d'alerte, mais je veux seulement qu'ils soient activés pour moi.MSVC - arrêter les avertissements dans les en-têtes

+0

Possible copie de [Quoi de neuf avec les milliers d'avertissements dans les en-têtes standard dans MSVC -Wall?] (Http://stackoverflow.com/questions/4001736/whats-up-with-the-thousands-of-warnings- en-standard-headers-in-msvc-wall) – nus

+0

voter pour https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/14717934-add-a-cl-exe-option-for -system-headers-like-gcc-s – Trass3r

Répondre

7

/Wall est très pedantic. /W4 est probablement tout ce dont vous avez vraiment besoin. Pour répondre à votre question, vous pouvez désactiver les avertissements spécifiques autour de vos têtes avec:

#pragma warning(disable:xxxx) 
#include <yourheader.h> 
#pragma warning(default:xxxx) 

Ou modifier le niveau d'avertissement avec:

#pragma warning(push,3) 
#include <yourheader.h> 
#pragma warning(pop) 

Voir la documentation MSDN: http://msdn.microsoft.com/en-us/library/2c8f766e.aspx

+0

Il n'y a donc aucun moyen de dire à MSVC de ne pas avertir dans les en-têtes sur lesquels je n'ai aucun contrôle? (c'est-à-dire tous les en-têtes inclus dans les chevrons, pas les doubles guillemets) – bfops

+1

Non, il n'y en a pas. De plus, pour certains modèles, vous devez désactiver les avertissements non seulement autour des en-têtes, mais aussi là où vous les instanciez (mais peut-être que c'était un problème avec une version plus ancienne ... Je ne suis pas si sûr, sry). Faites particulièrement attention lorsque vous utilisez des en-têtes précompilés: vous devez également tout désactiver. – gimpf

0

Mark Tolonen a déjà signaler /W4.

Si cela produit encore des avertissements, par ex. vous utilisez une ancienne version MSVC comme 7.1, ou vous utilisez une bibliothèque tierce qui produit toujours des avertissements sur un code parfaitement bon, et vous visez compile proprement, puis voir mon entête msvc silly-warning suppression. Il a été à travers quelques tours de la revue de la communauté, dans le groupe Usenet comp.lang.C++, mais il faudra peut-être/aura besoin de mise à jour car Microsoft ajoute encore plus d'avertissements stupides dans les nouvelles versions du compilateur & hellip; ;-)

+0

J'aime particulièrement le nouvel avertissement dans VC++ 10 "avertissement: les éléments du tableau seront initialisés par défaut" comme si quelque chose n'allait pas: / –

0

Vous pouvez désactiver des avertissements spécifiques en utilisant le drapeau /wdXXXXXXXX est le nombre d'avertissements que vous souhaitez ignorer. Pas besoin de modifier le code.

Questions connexes