如何使用compile_flags.txt进行C++编程,并在C开发中抑制C++相关问题?

zazmityj  于 2023-05-19  发布在  其他
关注(0)|答案(1)|浏览(400)

最近我想使用compile_flags. txt文件来支持C++20开发。当使用结构化绑定和C相关特性时,Clangd会显示恼人的警告,因此我创建了这个文件。我的compile_flags.txt文件看起来像这样:
-std=c
20
然而,当我想编辑一个C文件时,clangd会抱怨基本的include指令:#include <stdio.h>

clang[drv_argument_not_allowed_with]: Invalid argument '-std=c++20' not allowed with 'C'.

当然,我删除了compile_flags.txt文件,它工作得很好。我如何才能同时编写C++20代码和C代码,而不必在每次决定在两者之间切换时手动删除文件?谢谢你的帮助提前:^)

cuxqih21

cuxqih211#

如果您不想使用compile_commands.json文件,那么另一种为clangd提供标志的机制是clangd config file,它比compile_flags.txt更灵活。
Clangd配置文件可以指定要添加的编译器标志,并且可以将配置限制为仅包含路径与特定模式匹配的文件(例如,具有特定扩展名的文件)。这允许基于文件扩展名为不同的语言指定不同的配置。
下面是一个配置文件的示例,它指定应该为.cpp文件添加标志-std=c++20,并且应该为.c文件添加标志-std=c17

If:
  PathMatch: .*\.cpp

CompileFlags:
  Add: [-std=c++20]

---

If:
  PathMatch: .*\.c

CompileFlags:
  Add: [-std=c17]

这将进入项目根目录中名为.clangd的文件。

相关问题