如何让Neovim的clangd LSP使用Homebrew GCC并解决头文件报错
解决方案:Neovim clangd bits/stdc++.h 报错及VS Code编译问题
一、解决Neovim clangd的bits/stdc++.h Lint错误
1. 修正clangd配置参数
不要直接替换mason的clangd二进制文件,在Neovim的clangd LSP配置中添加头文件路径、指定C++标准及编译器驱动:
require("lspconfig").clangd.setup({ cmd = { "clangd", "--query-driver=/usr/bin/clang++,/usr/local/bin/g++", "--std=c++17", "-I/usr/local/include", "-I/usr/local/opt/gcc/include/c++/13", -- 替换为你Homebrew GCC的实际头文件路径,可通过`brew info gcc`查看 }, })
2. 修复自定义bits/stdc++.h文件
手动创建的头文件内容可能不完整,直接复制Homebrew GCC自带的版本:
# 查找GCC自带的stdc++.h路径 find /usr/local/opt/gcc -name "stdc++.h" # 复制到/usr/local/include/bits目录 sudo mkdir -p /usr/local/include/bits sudo cp [查到的路径]/stdc++.h /usr/local/include/bits/
3. 验证配置生效
在Neovim中打开C文件,执行:LspInfo查看clangd的启动参数是否正确加载,确认头文件路径和C标准已被应用。
二、解决VS Code中g编译的C标准错误
VS Code默认编译命令未指定C++标准,创建/修改.vscode/tasks.json:
{ "version": "2.0.0", "tasks": [ { "label": "g++ build active file", "type": "shell", "command": "/usr/local/bin/g++", "args": [ "-std=c++17", "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"] } ] }
此后编译会自动启用C++17标准,支持初始化列表、auto、范围for等特性。
内容的提问来源于stack exchange,提问作者AnshUjlayan
相关产品推荐
相关产品推荐

