如何在 Mac 上使用 c++2a 编译生成器和协程
How to compile generator and coroutine using c++2a on Mac
我正在为 C++20 设置我的 MacBook,但在编译代码时遇到问题。我已经安装了最新的 Xcode、llvm 和 gcc。这是我要编译的代码
#include <chrono>
#include <experimental/coroutine>
#include <future>
#include <iostream>
using namespace std;
generator<int> getInts(int first, int last) {
for (auto i = first; i <= last; ++i) {
co_yield i;
}
}
int main() {
for (auto i : getInts(5, 10)) {
std::cout << i << " ";
}
}
但是我收到以下错误:
$ g++ gen.cpp -std=c++2a
In file included from gen.cpp:2:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/experimental/coroutine:66:5: warning:
<experimental/coroutine> cannot be used with this compiler [-W#warnings]
# warning <experimental/coroutine> cannot be used with this compiler
^
感谢任何有关如何解决此编译问题的见解。
Coroutines TS 还没有被投票到 C++20(事实上,已经有 3 次单独的投票,批准 not 在所有投票中都没有达成共识),所以即使如果 GCC 实现了它 (which it doesn't),它不会被 -std=c++2a
开关激活。
现在,Clang 确实实现了 Coroutines TS,您必须使用 -fcoroutines-ts
打开它。显然,您必须使用 libc++。
我正在为 C++20 设置我的 MacBook,但在编译代码时遇到问题。我已经安装了最新的 Xcode、llvm 和 gcc。这是我要编译的代码
#include <chrono>
#include <experimental/coroutine>
#include <future>
#include <iostream>
using namespace std;
generator<int> getInts(int first, int last) {
for (auto i = first; i <= last; ++i) {
co_yield i;
}
}
int main() {
for (auto i : getInts(5, 10)) {
std::cout << i << " ";
}
}
但是我收到以下错误:
$ g++ gen.cpp -std=c++2a
In file included from gen.cpp:2:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/experimental/coroutine:66:5: warning:
<experimental/coroutine> cannot be used with this compiler [-W#warnings]
# warning <experimental/coroutine> cannot be used with this compiler
^
感谢任何有关如何解决此编译问题的见解。
Coroutines TS 还没有被投票到 C++20(事实上,已经有 3 次单独的投票,批准 not 在所有投票中都没有达成共识),所以即使如果 GCC 实现了它 (which it doesn't),它不会被 -std=c++2a
开关激活。
现在,Clang 确实实现了 Coroutines TS,您必须使用 -fcoroutines-ts
打开它。显然,您必须使用 libc++。