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

Visual Studio 2022与Code::Blocks无法识别C++17编译器求助

解决VS2022社区版和Code::Blocks中GCC 13.x显示C++98的问题

核心原因

GCC默认编译时不会自动启用C11及以上标准,未指定标准的情况下,__cplusplus宏会被定义为199711L(对应C98)。VS Code能正常显示C++17,是因为它的配置文件里自动添加了-std=c++17这类指定标准的编译参数。


VS2022社区版解决步骤

  1. 确认编译器为MSYS2的GCC 13.x
    右键项目 → 属性 → 配置属性 → 常规,检查“平台工具集”是否为你安装的MSYS2 GCC。如果没找到,先通过“工具 → 获取工具和功能”安装“C++的Linux开发工作负载”,再返回选择对应工具集;也可以手动指定C:\msys64\mingw64\bin\g++.exe作为编译器路径。
  2. 强制指定C++17标准
    进入“配置属性 → C/C++ → 语言”,将“C标准”设置为ISO C++17 标准(/std:c++17)。若担心设置不生效,直接在“配置属性 → C/C → 命令行”的“附加选项”中手动添加-std=c++17,覆盖默认配置。
  3. 清理缓存重新构建
    点击“生成 → 清理解决方案”,再重新生成项目,避免旧缓存干扰结果。

Code::Blocks解决步骤

  1. 确认编译器指向MSYS2的GCC
    点击“设置 → 编译器”,在编译器列表中选中你添加的MSYS2 GCC(未添加的话点击“添加”,选择C:\msys64\mingw64\bin\g++.exe)。
  2. 开启C++17编译标志
    • 全局设置:在“编译器设置 → 编译器标志”中,找到并勾选-std=c++17(或-std=gnu++17,后者包含GNU扩展,不影响标准检测)。
    • 项目单独设置:右键项目 → “构建选项”,同样在“编译器标志”中勾选-std=c++17,确保项目设置优先级高于全局。
  3. 移除强制降级参数
    检查编译器标志中是否存在-std=c++98或-ansi这类强制使用旧标准的选项,如有则取消勾选。
  4. 清理再构建
    点击“构建 → 清理”,重新编译运行项目。

验证方法

无论使用哪款工具,都可以查看编译日志中的命令行参数,确认是否包含-std=c++17。若参数存在,__cplusplus宏应能正确显示201703L。

内容的提问来源于stack exchange,提问作者samsancoder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:05:27