如何解决clang-11是否通过-fcoroutines标志调用<coroutine>标头?
我正在尝试编译使用coroutine
库和命令的.cpp文件。
clang-11 -std=c++20 -stdlib=libstdc++ main.cpp
我收到这样的错误:
/usr/lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/coroutine:295:2: error: "the coroutine header requires -fcoroutines"
#error "the coroutine header requires -fcoroutines"
因此,我添加了标志:
clang-11 -std=c++20 -stdlib=libstdc++ main.cpp -fcoroutines
现在,我得到了错误:
clang-11: error: unknown argument: '-fcoroutines'
这是一个错误吗?
最接近的问题是here。但是,我无法断定是否存在错误。
对于它的价值,这里是来源:
#include <iostream>
#include <coroutine>
template<typename T>
bool is_prime(T number) {
for(int i=2;i<number;i++) {
if (not i%number) return true;
}
return false;
}
class prime_iterator {
unsigned int number = 2;
public:
auto operator*() const {
return number;
}
prime_iterator& operator++() {
++number;
if (not is_prime(number)) {
co_yield number; // Trying to invoke co_yield just to see if library works.
}
return *this;
}
};
auto main() -> int {
for(prime_iterator p; *p < 30; ++p) {
std::cout << *p << " is prime";
}
}
解决方法
应该是 -fcoroutines-ts 为 clang。除非你是用 clang 和 libstdc++ 构建协程。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。