【问题标题】:Do all C++ compilers support the async/await keywords?是否所有 C++ 编译器都支持 async/await 关键字?
【发布时间】:2016-12-30 14:50:09
【问题描述】:

我想在 C++(UE4 框架)中使用async/await 语法,但由于跨平台代码,我不确定这是否可行……或者可能吗?如果是,我该如何使用它?

在 Visual Studio 中还突出显示了 await__awaitresumableyield__yield_value)关键字。有什么区别?可能不是所有的编译器都支持这个关键字或者单独支持?

gccclang都接受了吗?或者不接受,我可以单独为每个平台使用宏。

【问题讨论】:

  • 不,不是所有编译器都支持asyncawait语法。 GCC 和 CLang 只是众多编译器中的两个。您应该检查 Greenhills、IAR、Keil 和 Visual Studio 等等。
  • llvm 和 clang 的实施正在进行中:参见 twitter.com/Eric01/status/867473461836263424(2017 年 5 月 24 日:“协程现在在 Clang Trunk 中!”)

标签: c++ asynchronous async-await cross-platform unreal-engine4


【解决方案1】:

asyncawait 是 Microsoft 提出的经过多次修订的语言扩展,但当前是 N4134。这还没有被标准接受。

该提案遭到http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0158r0.html 之类的许多人的反对,因为它没有被完全烘焙,也没有在 TS 中得到充分探索,还有像 N3985 这样的竞争提案,它提出了可以在现有语言标准中实现的协程。

据我所知,唯一真正支持 async/await 的编译器是 MS Visual Studio。

作为更新,clang 5.0 支持当前草案协同例程提案https://isocpp.org/files/papers/N4663.pdf,该提案现已被接受为 TS,并且正在朝着 C++20 标准发展。

【讨论】:

  • 哇,您确实是该主题的主题专家。
  • @AbhijeetNagre 通过知道在哪里寻找提案、订阅 wg21 邮件列表和跟踪 gcc/clang 更改日志,您可以成为主题专家。
猜你喜欢
  • 1970-01-01
  • 2012-06-29
  • 1970-01-01
  • 2023-03-27
  • 2014-02-28
  • 1970-01-01
  • 2012-02-04
  • 2021-07-19
  • 2011-09-04
相关资源
最近更新 更多