Pergunta

Sou novo em usar o Boost e tenho um problema. Eu preciso da função shared_mutex no meu projeto. Então eu fiz

#include "boost/thread/shared_mutex.hpp"

E compilou meu projeto. Meu MSVC 2005 com "avisos de tratamento como erros" para a compilação por causa de um aviso:

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

Não tenho idéia, por que o Shared_mutex precisa da função Microssegunds (eu li do que o Boost Libraries tem uma lista bastante de grandes dependências), mas não consigo compilar meu projeto. Eu pesquisei um pouco, encontrei o mesmo problema, mas nenhuma decisão.

Atualização: estou compilando o Boost agora, mas quero colocar todas as fontes no meu projeto de código aberto, incluindo boost.thread.shared_mutex.

Foi útil?

Solução

Aposto que eles estão fazendo A += em um curta não assinado. O resultado da adição é lançado para um INT implicitamente, depois precisa ser abatido de volta a um curta não assinado para a tarefa.

Outras dicas

Várias bibliotecas de impulso geram todos os tipos de avisos no Visual Studio construindo no nível 4. Nós apenas os desativamos.

Por exemplo, um de nossos arquivos de cabeçalho pré -compilado possui:

#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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top