2009-08-27 10 views
0

私はブーストを使用していて問題があります。私は私のプロジェクトでshared_mutex関数が必要です。だから完了しましたboost microsec_time_clock.hpp warning C4244

#include "boost/thread/shared_mutex.hpp" 

私のプロジェクトをコンパイルしました。 「警告をエラーとして扱う」と私のMSVC 2005があるため、警告のコンパイルを停止します。

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

私はshared_mutexは、マイクロ秒の機能を必要とする理由は考えて、(私はブーストライブラリはかなり大きな依存関係のリストを持っているよりも読みました)がありません私のプロジェクトはコンパイルできません。私はちょっとgoogled、同じ問題が見つかりましたが、決定はありません。

UPDATE:私は今ブーストをコンパイルしていますが、boost.thread.shared_mutexを含むすべてのソースをオープンソースプロジェクトに入れたいと思います。

+0

投稿するとバージョン番号が増える場合があります。 boost/version.hpp –

+0

で定義されているマクロBOOST_LIB_VERSIONに見つかりました。申し訳ありませんが、コンパイラを投稿しましたが、忘れてしまったことがあります。 最新(1.40.0)のバージョンがあります。 – f0b0s

+0

#define BOOST_VERSION 104000 – f0b0s

答えて

0

私は、彼らが符号なしshortに+ =をやっていると思いますわ。加算の結果はintに暗黙的にキャストされ、割り当てのためのunsigned shortにダウンキャストされる必要があります。

2

さまざまなBoostライブラリは、レベル4のVisual Studioビルドですべての種類の警告を生成します。例えば

、私たちのプリコンパイル済みヘッダーファイルのいずれかを持っている:

#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

私は学生ですが専門家ではありませんが、どのようにしてプログラマーが警告するコードを書くことができないのか分かりませんし、私たち(ブーストを使うプログラマー)は警告を無視できます。 – f0b0s

+0

どこでもBoostのドキュメントでカバーされているかどうかわかりませんが、zlibのFAQには良い応答があります: - 私はこれを警告します...あなたは正しいコードを書くことができませんか? - 何年も前、私たちは、宇宙のすべてのコンパイラに関する警告を避けることを断念しました。それはちょうど時間の無駄でなければなりません、そして、いくつかのコンパイラはまったくばかげていました。今は、コードが常に機能することを確認するだけです。 - http://www.zlib.net/zlib_faq.html#faq35 –

関連する問題