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

如何在VS Code的clangd中指定C++14版本?

解决VS Code中clangd对C14项目提示C17特性的问题

以下是几种可靠的解决方法,按优先级排序:

1. 生成compile_commands.json(最推荐)

clangd会优先依据这个文件获取项目的编译标准和参数,这是最准确的方式:

  • 如果用CMake构建项目:
    在CMakeLists.txt里添加两行配置:
    set(CMAKE_CXX_STANDARD 14)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    
    重新生成CMake配置时加上导出编译命令的参数:
    cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
    
    将生成的compile_commands.json放到项目根目录即可。
  • 如果不用CMake,手动创建compile_commands.json:
    替换成你的项目路径和编译命令,示例如下:
    [
      {
        "directory": "/home/yourname/your-project",
        "command": "g++ -std=c++14 -Wall -c src/main.cpp",
        "file": "src/main.cpp"
      }
    ]
    

2. 直接给clangd指定C++14标准

如果暂时没法生成compile_commands.json,可以通过VS Code设置强制clangd使用C++14:

  • 打开VS Code设置(快捷键Ctrl+,),搜索clangd: Arguments
  • 添加参数--std=c++14,最终配置类似:
    "clangd.arguments": [
      "--std=c++14",
      // 其他你需要的clangd参数
    ]
    
    注意:如果项目存在compile_commands.json,这个设置会被覆盖。

3. 配置clang-tidy遵循C++14

如果提示确实来自clang-tidy,在项目根目录创建.clang-tidy文件,明确指定标准:

Language: C++
Standard: C++14
# 其他clang-tidy检查规则可按需添加
Checks: '-*,readability-*'

补充说明

之前设置clang-tidy参数无效,大概率是因为clangd优先读取了未指定C++14的项目编译配置(比如缺失正确的compile_commands.json),导致clang-tidy继承了较高的标准。重启clangd时提示短暂消失,是因为缓存被清空,但重新初始化时又读取了默认的高版本标准,所以会再次出现提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:47:10