Eld*_*bri 5 c c++ compiler-warnings clangd
最近我想使用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'.
Run Code Online (Sandbox Code Playgroud)
当然,我删除了compile_flags.txt-file 并且它工作正常。如何实现同时编写 C++20 代码和 C 代码,而无需每次决定在两者之间切换时手动删除文件?感谢您提前提供任何帮助:^)
如果您不想使用compile_commands.json文件,可以使用另一种向 clangd 提供标志的机制,该机制比clangd 配置文件compile_flags.txt更灵活。
Clangd 配置文件可以指定要添加的编译器标志,并且您可以将配置限制为仅包含路径与特定模式匹配的文件(例如,具有特定扩展名的文件)。这允许根据文件扩展名为不同的语言指定不同的配置。
下面是一个配置文件的示例,它指定-std=c++20应该为文件添加该标志,并且应该为文件添加.cpp该标志:-std=c17.c
If:
PathMatch: .*\.cpp
CompileFlags:
Add: [-std=c++20]
---
If:
PathMatch: .*\.c
CompileFlags:
Add: [-std=c17]
Run Code Online (Sandbox Code Playgroud)
.clangd这将进入项目根目录中命名的文件中。