/await(启用协同程序支持)

使用 /await 编译器选项启用对协同例程的编译器支持。

语法

/await
/await:strict

备注

/await 编译器选项启用对 C++ 协同例程和关键字 co_awaitco_yieldco_return 的编译器支持。 默认情况下,此选项处于关闭状态。 有关 Visual Studio 中协同例程支持的信息,请参阅 Visual Studio 团队博客。 有关协同例程标准提案的更多信息,请参阅 N4628 工作草案,协同例程 C++ 扩展技术规范

从 Visual Studio 2015 开始,可以使用 /await 选项。

从 Visual Studio 2019 版本 16.10 开始,可以使用 /await:strict 选项代替 /await。 该选项在以 C++14 或 C++17 模式构建的项目中提供与 C++20 兼容的协同例程支持。 在 /await:strict 模式下,在<协同例程>和 std 命名空间中支持库。

/await:strict 选项将禁用在 /await 中存在但未在 C++20 标准中采用的语言扩展。 使用此类功能会导致编译器错误。 该选项还实现了协同例程行为,例如 promise 参数预览。 由于旧版本 Visual Studio 中的二进制兼容性问题,这些行为在 /await 下不可用。

注意

coroutine_handle<T>::address() 获得的协同例程状态对象在 /await/await:strict 模式之间不兼容。 如果地址是从以不兼容模式编译的代码创建的协程句柄获得的,则对此类地址使用 coroutine_handle<T>::from_address() 会导致未定义的行为。

在 Visual Studio 开发环境中设置此编译器选项

  1. 打开项目的“属性页”对话框。

  2. 选择“配置属性”>“C/C++”>“命令行”属性页

  3. 在“附加选项”框中输入 /await/await:strict 编译器选项。 选择“确定”或“应用”以保存更改。

以编程方式设置此编译器选项

另请参阅

MSVC 编译器选项
MSVC 编译器命令行语法