boost::asio async_read_some async_read_until编译器警告
boost::asio async_read_some async_read_until Compiler Warning
我使用以下方法:
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:devsapphireboost_1_46_1boost/asio/detail/reactive_socket_recv_op.hpp(58) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
下面是完整的输出:
C:devsapphireboost_1_46_1boost/asio/detail/reactive_socket_recv_op.hpp(58) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
C:devsapphireboost_1_46_1boost/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:devsapphireboost_1_46_1boost/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:devsapphireboost_1_46_1boost/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:devsapphireboost_1_46_1boost/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:devsapphireboost_1_46_1boost/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_episrcconnection.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>>>>
]
从我的理解是,错误来自第36行,但我不明白发生了什么。我认为这与bytes_transfer_当它是int时被用作bool有关。如果有人能澄清这个问题和/或如何解决它,那将是极好的!
谢谢!
这是一个Visual studio特有的警告,它是从Boost的代码发出的,而不是你的。在大多数情况下可以忽略它。如果您想禁用它,请使用适当的pragma。
#pragma warning(disable: 4800)
在最新的Boost中可能已经修复了。ASIO版本。我已经安装了1.47,并且有问题的行没有发出此警告。
相关文章:
- 为什么std::async使用同一个线程运行函数
- 为什么可以将左值传递给"std::async",即使它引用了右值
- 使用用户定义的参数调用future/async并调用类方法
- 使用 ImageIO.read() 生成的图像是否仍然使用传递给它的相同内存?
- std::ifstream::read 不会读取所有 512 字节,并设置 EOF 和失败位
- 使用 std::async 时死锁,将来作为成员
- 为什么我不能将引用作为 std::async 的函数参数传递
- std::async from std::async in windows xp
- Google Cloud Pubsub Async Streaming API in C++
- write() 和 read() 中几乎没有混淆
- C++ TCP 套接字通信 - 连接按预期工作,几秒钟后失败,没有收到新数据,read() 和 recv() 块
- -fno-unwind-tables 和 -fno-async-unwind-tables 不起作用 NDK clang
- 为什么调试器引发"read access violation. this was nullptr"异常?
- 对同一文件使用 .read 的次数是否有限制?
- Win32 API - HWND "{unused = ???} Unable to read memory"错误
- 为什么我会"Invalid read of size 8"?(瓦尔格林德)
- std::async 如何工作:为什么它会调用这么多次复制/移动?
- QDataStream read to QVector
- asio::read() 需要很长时间,使用 asio::write 没有问题
- Read OpenCV Mat 16bit to QImage 8bit Greyscale