c++ - Visual Studio 在作者的 Boost Asio 示例中提示 co_await

标签 c++ boost boost-asio

说到 Boost Asio,我完全是个新手。我玩过回调,一切正常。但是,现在我正在尝试切换到协程,但我遇到了 co_await 的问题。 Visual Studio 2017 社区版说 “此 co_await 表达式需要合适的“await_ready”函数,但未找到”

我使用的代码是作者在 Boost Asio 网站上的示例。链接:

https://www.boost.org/doc/libs/1_69_0/doc/html/boost_asio/example/cpp17/coroutines_ts/echo_server.cpp

我对代码所做的唯一修改是文件第一行的#define BOOST_ASIO_HAS_CO_AWAIT

为什么每次出现 co_await 时,我都会收到此错误 “this co_await expression requires a suitable "await_ready"function and none was found"?作者的例子应该没​​有问题吧?我是否缺少 #include 或其他内容?

非常感谢任何帮助。

最佳答案

感谢 Lightness Races in Orbit 建议尝试编译器开关,这是主要问题,尽管我还有其他几个问题。如果有人遇到类似的问题,这些是我采取的步骤:

  1. #define BOOST_ASIO_HAS_CO_AWAIT移动到头文件,在我的例子中是pch.h(愚蠢的错误)
  2. 添加 /await 切换到 Project Properties > C/C++ > Command Line > Additional Options

至此,一切编译无误。但是,co_await 仍然带有红色下划线,因为:

Intellisense compiler has not caught up with MSVC compiler yet.

来源:https://blogs.msdn.microsoft.com/vcblog/2017/05/19/using-c-coroutines-with-boost-c-libraries/

关于c++ - Visual Studio 在作者的 Boost Asio 示例中提示 co_await,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54112309/

相关文章:

c++ - 什么是 Glew、Glut 和 glfw3?哪些在 Opengl 3/4 中已被弃用

c++ - 用 C++ 实现异步惰性生成器

c++ - 重载方法还是使用默认值? C++

c++ - OpenGL 单 channel 到多 channel 的可行性

c++ - 将 blob 从 mysql 复制到 postgres 进展不顺利(我再也看不到图像了)

c++ - 序列化 variables_map

c++ - boost 正则表达式格式化程序,如何使用自定义函数

c++ - 在 fork 后删除 condition_variable 时提升崩溃

c++ - 一起使用 Boost::Asio 套接字异步和同步操作

c++ - 使用Boost Asio时获取 “resolve: Host not found (authoritative)”异常