我想在C++ (UE4 框架) 中使用 async/await
语法,但由于跨平台代码,我不确定是否可能... 可能吗?如果可以,我该如何使用它?
还有在 Visual Studio 中突出显示的 await
和 __await
(还有 resumable
、yield
和 __yield_value
)关键字。有什么区别?也许并非所有编译器都支持这些关键字或单独支持这些关键字?
gcc
,clang
是否接受它?还是不接受,我只能为每个平台使用宏?
我想在C++ (UE4 框架) 中使用 async/await
语法,但由于跨平台代码,我不确定是否可能... 可能吗?如果可以,我该如何使用它?
还有在 Visual Studio 中突出显示的 await
和 __await
(还有 resumable
、yield
和 __yield_value
)关键字。有什么区别?也许并非所有编译器都支持这些关键字或单独支持这些关键字?
gcc
,clang
是否接受它?还是不接受,我只能为每个平台使用宏?
async
和 await
是由 Microsoft 提出的语言扩展,经过数次修改,当前版本为N4134,但尚未被纳入标准规范。
由于并未完全成熟并且没有在 TS 中进行充分探讨,该提案遭到了很多人的反对,例如http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0158r0.html,而且还有竞争性的提案,例如N3985,它提出了可以在现有语言标准内实现的协程。
据我所知,目前唯一支持 async/await 的编译器是 MS Visual Studio。
更新:clang 5.0 已经支持了当前草案的协程提案https://isocpp.org/files/papers/N4663.pdf,该提案已经被接受为 TS,并正在朝着 C++20 标准前进。
async
或await
语法。GCC和CLang只是众多编译器中的两个。您应该检查Greenhills、IAR、Keil和Visual Studio等几个编译器。 - Thomas Matthews