有没有办法指定clangd的c++标准而不需要重新编译它?

Aar*_*Liu 12 c++ standards clangd

我正在尝试使用 c++17(const lambdas) 中的一项功能,而不会出现 clangd 错误。我在网上搜索过,每个答案都告诉我用标志重新编译 clangd 。真的没有别的办法了吗?

编辑:Clangd 不是编译器。它是一个语言服务器,是一个与 IDE 一起使用的程序,它基本上在编译代码之前检查代码是否有错误和警告。请参阅https://clangd.llvm.org

Aar*_*Liu 20

答案的灵感来自于n。1.8e9-我的份额在哪里 m。

来自https://clangd.llvm.org/config#compileflags

您可以为 clangd 创建一个配置文件。在配置文件中,您可以指定模仿的编译器选项。对于我的问题,请执行以下操作:

CompileFlags:
  Add: [-std=c++20]
Run Code Online (Sandbox Code Playgroud)

将配置文件放置.clangd在您想要应用该配置的文件的共享父目录中。如果您希望它适用于整个用户,请将其作为config.yaml特定于操作系统的目录中的文件:

  • Windows%LocalAppData%\clangd\config.yaml通常 C:\Users\Bob\AppData\Local\clangd\config.yaml
  • 苹果系统~/Library/Preferences/clangd/config.yaml
  • Linux 和其他$XDG_CONFIG_HOME/clangd/config.yaml通常 ~/.config/clangd/config.yaml

  • 配置文件名为“~/.clangd”。(参考:[*配置文件*](https://clangd.llvm.org/config#files)) (5认同)
  • 不幸的是,这也会强制将 c 文件视为 c++20 文件,这可能是不可取的。 (2认同)