2011-11-22 2 views
1

경고 async_read_until ASIO async_read_some :부스트 :: 컴파일러가 나는 다음과 같은 방법을 사용하고

boost::asio::streambuf io_bufstream; 

boost::asio::async_read_until(socket_, io_bufstream, "</message>", 
    strand_.wrap(
    boost::bind(&Connection::handleRead, shared_from_this(), 
    boost::asio::placeholders::error, 
    boost::asio::placeholders::bytes_transferred)));//warning: line 36 


boost::array<char, 8192> buffer_  
socket_.async_read_some(boost::asio::buffer(buffer_), 
    strand_.wrap(
    boost::bind(&Connection::handleRead, shared_from_this(), 
    boost::asio::placeholders::error, 
    boost::asio::placeholders::bytes_transferred))); // warning 

나는 다음과 같은 경고 얻을 :

C:\dev\sapphire\boost_1_46_1\boost/asio/detail/reactive_socket_recv_op.hpp(58) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) 
     C:\dev\sapphire\boost_1_46_1\boost/asio/detail/reactive_socket_recv_op.hpp(48) : while compiling class template member function 'bool boost::asio::detail::reactive_socket_recv_op_base::do_perform(boost::asio::detail::reactor_op *)' 
     with 
     [ 
      MutableBufferSequence=boost::asio::mutable_buffers_1 
     ] 
     C:\dev\sapphire\boost_1_46_1\boost/asio/detail/reactive_socket_recv_op.hpp(71) : see reference to class template instantiation 'boost::asio::detail::reactive_socket_recv_op_base' being compiled 
     with 
     [ 
      MutableBufferSequence=boost::asio::mutable_buffers_1 
     ] 
     C:\dev\sapphire\boost_1_46_1\boost/asio/detail/reactive_socket_service_base.hpp(227) : see reference to class template instantiation 'boost::asio::detail::reactive_socket_recv_op' being compiled 
     with 
     [ 
      MutableBufferSequence=boost::asio::mutable_buffers_1, 
      Handler=boost::asio::detail::wrapped_handler,boost::_bi::list3>,boost::arg<1>,boost::arg<2>>>> 
     ] 
     C:\dev\sapphire\boost_1_46_1\boost/asio/stream_socket_service.hpp(263) : see reference to function template instantiation 'void boost::asio::detail::reactive_socket_service_base::async_receive(boost::asio::detail::reactive_socket_service_base::base_implementation_type &,const MutableBufferSequence &,boost::asio::socket_base::message_flags,Handler)' being compiled 
     with 
     [ 
      MutableBufferSequence=boost::asio::mutable_buffers_1, 
      ReadHandler=boost::asio::detail::wrapped_handler,boost::_bi::list3>,boost::arg<1>,boost::arg<2>>>>, 
      Handler=boost::asio::detail::wrapped_handler,boost::_bi::list3>,boost::arg<1>,boost::arg<2>>>> 
     ] 
     C:\dev\sapphire\boost_1_46_1\boost/asio/basic_stream_socket.hpp(708) : see reference to function template instantiation 'void boost::asio::stream_socket_service::async_receive(boost::asio::detail::reactive_socket_service::implementation_type &,const MutableBufferSequence &,boost::asio::socket_base::message_flags,ReadHandler)' being compiled 
     with 
     [ 
      Protocol=boost::asio::ip::tcp, 
      MutableBufferSequence=boost::asio::mutable_buffers_1, 
      ReadHandler=boost::asio::detail::wrapped_handler,boost::_bi::list3>,boost::arg<1>,boost::arg<2>>>> 
     ] 
     ..\..\..\platform_epi\src\connection.cpp(36) : see reference to function template instantiation 'void boost::asio::basic_stream_socket::async_read_some>(const MutableBufferSequence &,ReadHandler)' being compiled 
     with 
     [ 
      Protocol=boost::asio::ip::tcp, 
      Dispatcher=boost::asio::io_service::strand, 
      Handler=boost::_bi::bind_t,boost::_bi::list3>,boost::arg<1>,boost::arg<2>>>, 
      MutableBufferSequence=boost::asio::mutable_buffers_1, 
      ReadHandler=boost::asio::detail::wrapped_handler,boost::_bi::list3>,boost::arg<1>,boost::arg<2>>>> 
     ] 
: 여기

C:\dev\sapphire\boost_1_46_1\boost/asio/detail/reactive_socket_recv_op.hpp(58) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) 

뿐만 아니라 전체 출력

내 이해에서 오류가 줄 36에서 비롯되지만 나는 무슨 일이 일어나고 있는지 이해하지 못한다. 나는 그것이 int 일 때 bool로 사용되는 bytes_transferred와 관련이 있다고 생각한다. 누구든지이 문제 및/또는 문제를 해결하는 방법을 분명히 할 수 있다면 멋질 것입니다.

감사합니다.

+0

오류가없고 경고 만 표시됩니다. –

답변

3

이것은 Visual Studio 관련 경고이며, 사용자가 아닌 Boost의 코드에서 방출됩니다. 대부분의 경우 무시할 수 있습니다. 사용하지 않으려면 적절한 pragma를 사용하십시오.

#pragma warning(disable: 4800) 

최신 Boost.ASIO 버전에서 수정되었을 수 있습니다. 1.47이 설치되어 있으며 문제의 라인에서이 경고가 표시되지 않습니다.