为非项目文件设置 Clangd Fallback Flags

问题

直接用 vscode clangd 插件的 fallback flag 设置,会让所有没 complie_commands.json 的文件都用这个 flag,然后 clangd 就会在打开 C 文件时哀嚎不支持这么玩

StackOverflow 的解决方案提到使用 clangd 的用户配置文件使用 If 判断文件名来 ComplieFlags Add,又会覆盖 complie_commands.json 里指定的,然后遇到标准不符的 C++ 文件又会乱叫,麻了

解决方案

直接 fallback flag 里设置 C++ 的 std 标准,然后在用户配置文件里用 If 判断文件名是否是 \*.c 然后 Remove CompileFlags 里的 -std=c++* 就行

clangd fallback flags:

1
-std=c++20

clangd config.yaml:

1
2
3
4
5
6
7
8
9
10
11
CompileFlags:
Add:
- -SOME_MACRO_TO_DEFINE
---

If:
PathMatch: [.*\.c]
CompileFlags:
Remove:
- -std=c++*
- -std=cxx*
正在回复第 0-0
0条评论 使用邮件回复 手动发送 匿名