如何解决g++10、C++20、boost 1.75.0 :: 错误:“awaitable”尚未在“boost::asio”中声明
我尝试编译示例:echo_server_with_as_single_default.cpp
from boost examples on an:
- Ubuntu 18.04
- 提升 1.75.0
- g++ 10.1.0
使用以下命令进行编译和链接(我知道这不是最佳选择,我重用了我正在处理的另一个项目的 makefile):
g++ -MT bin/.o/src/main.o -MD -MP -MF bin/.d/src/main.d -std=c++20 -Isrc -Ilib/ -g -Wfatal-errors -c -o bin/.o/src/main.o src/main.cpp
g++ -o bin/server bin/.o/src/main.o -lpthread -lrt -lboost_system -lboost_thread -lboost_chrono -lboost_context -lboost_coroutine -DBOOST_COROUTINES_NO_DEPRECATION_WARNING
我收到以下错误:
我尝试了不同的组合,但我遗漏了一些东西。有什么帮助吗?
error: 'awaitable' has not been declared in 'boost::asio'
22 | using boost::asio::awaitable;
解决方法
目前,在 gcc 中默认不启用协程。您需要传递 -fcoroutines
编译器开关才能启用它们。这可能很快就会改变,因为它已经适用于当前的 gcc 主干版本。
参见here(由于godbolt.org 的执行时间限制,我不得不注释掉main 中的代码)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。