VSCode clangd默认C/C++标准配置及编译错误问题求助
解决vscode-clangd的C/C++标准相关问题
我被这些警告/错误折腾很久,特意整理解决方案帮后来人,用的是vscode-clangd扩展。
问题1:设置默认C/C标准解决C11+语法警告
遇到'auto' type specifier is a C++11 extensionclang(-Wc++11-extensions)这类提示,按以下步骤操作:
- 打开VS Code设置界面(快捷键
Ctrl+,) - 搜索
clangd: Arguments,点击「编辑 in settings.json」 - 在参数数组里添加对应编译标准的参数:比如要启用C++17就加
"-std=c++17",要设置C11标准就加"-std=c11" - 保存配置后,通过命令面板(
Ctrl+Shift+P)执行clangd: Restart Language Server,让设置生效
问题2:解决头文件解析与标准冲突的错误
遇到Invalid argument '-std=c99' not allowed with 'Objective-C++'或.h头文件被错误解析为C/C++导致标准冲突的问题,试试这两种方法:
方法1:用项目配置文件指定文件解析类型
在项目根目录创建.clangd文件,根据需求配置规则,示例如下:
CompileFlags: Add: [-std=c++17] # 针对不同文件设置解析语言 Cases: - File: "*.h" CompileFlags: Add: [-x, c++] # 把所有.h文件按C++解析 - File: "src/**/*.h" CompileFlags: Add: [-x, c] # 把src目录下的.h文件按C解析
方法2:调整全局设置移除冲突参数
如果是全局设置的标准参数和当前项目语言(比如Objective-C++)冲突,检查clangd: Arguments里的参数,删掉和项目语言不匹配的标准参数,比如Objective-C项目不要加-std=c99,改用对应OC的标准配置。
内容的提问来源于stack exchange,提问作者yaoyhu
相关产品推荐
相关产品推荐

