You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Windows 11使用MinGW-w64 v13.2.0与g++、C++17环境下无法引入<experimental/coroutine>头文件的解决方法

在Windows 11使用MinGW-w64 v13.2.0与g++、C++17环境下无法引入<experimental/coroutine>头文件的解决方法

嘿,我来帮你捋清楚这个问题~ 其实你遇到的情况是MinGW-w64的gcc 13.2.0版本在C++17模式下,已经不再提供<experimental/coroutine>这个头文件了,这也是为什么你加了-fcoroutines选项也没用——问题出在头文件本身不存在,而不是编译开关没加对。

你在MinGW目录里找到的那个coroutine文件,正是问题的关键:它是C++20标准正式纳入的协程头文件,替代了之前处于实验阶段的<experimental/coroutine>。gcc从10.x版本开始就支持C20的标准协程,而到了13.x版本,干脆移除了C17模式下的experimental协程头,只保留标准版本。

下面给你两种解决思路,按需选择:

方案1:迁移到C++20标准协程(推荐)

这是最稳妥的方式,因为experimental特性本来就是临时的,标准版本更稳定且后续支持更好:

  • 把代码里的#include <experimental/coroutine>改成#include <coroutine>
  • 同时调整编译命令,把C标准从C17切换到C++20(或更高),保留-fcoroutines选项(部分gcc版本可能默认启用,但加上更保险)。示例命令:
    g++ -std=c++20 -fcoroutines your_file.cpp
    
  • 注意:如果你的代码里用到了std::experimental::coroutine_handle这类experimental命名空间下的类型,需要改成std::coroutine_handle(对应标准命名空间)。

方案2:降级MinGW-w64版本(不推荐,仅当你必须保留C++17和experimental协程时)

如果你因为某些原因无法迁移到C20,只能用C17的experimental协程,那你需要降级到更早的MinGW-w64版本(比如gcc 11.x或更早)——这些版本在C++17模式下还保留了<experimental/coroutine>头文件。不过这种方式不推荐,因为旧版本可能存在其他bug,且experimental特性不会再得到维护。

备注:内容来源于stack exchange,提问作者okaka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 10:24:38