2009-08-27 8 views
0

Je suis nouveau dans l'utilisation de boost et j'ai un problème. J'ai besoin de la fonction shared_mutex dans mon projet. Donc j'ai faitboost microsec_time_clock.hpp avertissement C4244

#include "boost/thread/shared_mutex.hpp" 

Et compilé mon projet. Mon MSVC 2005 « Traiter les avertissements comme des erreurs » arrête la compilation en raison d'un avertissement:

c:\\...\microsec_time_clock.hpp(103) : warning C4244: 'argument' : conversion from 'int' to 'unsigned short', possible loss of data

Je ne sais pas, pourquoi shared_mutex a besoin fonction microsecondes (je l'ai lu que les bibliothèques Boost ont plutôt grande liste des dépendances) , mais je ne peux pas compiler mon projet. J'ai googlé un peu, j'ai trouvé le même problème, mais pas de décision. MISE À JOUR: Je compile boost maintenant, mais je veux mettre toutes les sources à mon projet open-source, y compris boost.thread.shared_mutex.

+0

La publication du numéro de version de boost pourrait être utile. Il peut être trouvé dans la macro BOOST_LIB_VERSION définie dans boost/version.hpp –

+0

désolé, j'ai posté mon compilateur mais boost oublié. J'ai la dernière version (1.40.0). – f0b0s

+0

#define BOOST_VERSION 104000 – f0b0s

Répondre

0

Je parie qu'ils font un + = sur un court non signé. Le résultat de l'ajout est converti implicitement en un int, puis doit être retransmis à un raccourci non signé pour l'affectation.

2

Différentes bibliothèques Boost génèrent toutes sortes d'avertissements sur les versions Visual Studio au niveau 4. Nous les désactivons simplement.

Par exemple, un de nos fichiers d'en-tête précompilés a:

#pragma warning(push, 0) 
#include <boost/asio.hpp> 
#include <boost/asio/streambuf.hpp> 
#include <boost/lexical_cast.hpp> 
#include <boost/noncopyable.hpp> 
#include <boost/thread.hpp> 
#include <boost/scoped_ptr.hpp> 
#include <boost/shared_ptr.hpp> 
#include <boost/system/error_code.hpp> 
#include <boost/xpressive/xpressive.hpp> 
#pragma warning(pop) 
+0

Je suis étudiant, pas un professionnel, mais je ne comprends pas comment les programmeurs peuvent écrire du code qui prévient, et nous (les programmeurs, qui utilisent boost) peuvent ignorer ces avertissements. – f0b0s

+0

Je ne sais pas si cela est couvert par les docs Boost n'importe où, mais la FAQ de zlib a une bonne réponse: - Je reçois ce ... avertissement ... Vous ne pouvez pas écrire le bon code? - Il y a plusieurs années, nous avons renoncé à essayer d'éviter les avertissements sur tous les compilateurs de l'univers. Cela a juste été une perte de temps, et certains compilateurs ont carrément été stupides. Alors maintenant, nous nous assurons simplement que le code fonctionne toujours. - http://www.zlib.net/zlib_faq.html#faq35 –