2010-11-15 10 views
4

Env: Niveau d'alerte Visual Studio est réglé sur 4, code dans le seul fichier en solution:avertissements Désactiver dans Visual Studio 2008

#pragma warning(push) 
#pragma warning(disable: 4503) 
#pragma warning(disable: 4702) 
#include <boost/property_tree/ptree.hpp> 
#pragma warning (pop) //mark 

#include "iostream" 

int main() 
{ 
boost::property_tree::ptree pt; 
for(boost::property_tree::ptree::const_iterator it = pt.begin(); 
    it != pt.end(); 
    ++it) 
    { 
    std::cout << it->second.data() << '\n'; 
    } 

return 0; 
} 

Problème: Avertissement 4503 sont toujours montrées lors de la compilation. Autre chose que j'ai essayé:

  1. mis la ligne avec « // marque » comme dernière ligne de l'application, aucun effet. Si j'utilise #pragma warning (désactiver: 4503 4702) sans push/pop, cela fonctionne, mais cela affecte ce qui a été compilé après pour la solution complète, même si je mets un avertissement #pragma (par défaut: xx) quelque part, il doesn ' Il semble que l'avertissement revienne à l'état par défaut.

Qui sait pourquoi cela se produit et quelle est la meilleure solution pour supprimer les avertissements en studio visuel. à votre santé.

Répondre

2
trouvé réponse de

ici: http: //connect.microsoft.com/VisualStudio/feedback/details/442051/cannot-suppress-warning-in-template-function

En gros, la raison est parce que les mises en garde généré dans mon code tout en n'étant pas dans le fichier d'en-tête, car c'est un modèle. Si le code est généré dans des fichiers d'en-tête, la façon de procéder fonctionnerait.

+0

mais cela n'explique pas pourquoi la solution alternative 1 n'a pas fonctionné –