说到 Boost Asio,我完全是个新手。我玩过回调,一切正常。但是,现在我正在尝试切换到协程,但我遇到了 co_await
的问题。 Visual Studio 2017 社区版说 “此 co_await 表达式需要合适的“await_ready”函数,但未找到”
。
我使用的代码是作者在 Boost Asio 网站上的示例。链接:
我对代码所做的唯一修改是文件第一行的#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 建议尝试编译器开关,这是主要问题,尽管我还有其他几个问题。如果有人遇到类似的问题,这些是我采取的步骤:
- 将
#define BOOST_ASIO_HAS_CO_AWAIT
移动到头文件,在我的例子中是pch.h(愚蠢的错误) - 添加
/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/