VSCode+clangd让写C/C++代码更丝滑

20 篇文章 0 订阅
11 篇文章 3 订阅
本文介绍了如何在使用Go语言的Goland中,通过VSCode和clangd改进C/C++代码编写体验,包括安装编译器、配置clangd以支持代码补全、静态分析和解决与其他插件冲突的方法。
摘要由CSDN通过智能技术生成

使用C/C++写了十几二十年的代码了,这两年做的项目都是使用Go语言来写的代码了,主要使用Goland来写Go,写起来是相当的丝滑,自动提示、补充代码就不说了,很多IDE都有的功能,它还支持自动添加代码import包,提示如何修复错误等等。C/C++也有IDE可以做到了,这一切都要归功于LLVM的优秀设计,让编译器实现模块化,出了clang、clangd、clang-tidy等等优秀的产品,真是C/C++爱好者的福音。

clangd之所以能够很好的理解C/C++代码,实现代码补全、跳转、提示等等功能,就是因为它在clang编译器的基础上使用语言服务协议(Language Server Protocol)与IDE进行实时交互。

clangd还能够调用clang-tidy进行代码的静态分析:

在这里插入图片描述

下面就简单介绍一下VSCode如何使用clangd更丝滑地写C/C++代码。

一、环境安装

至于编译器的安装就不多说了,Windows下可以安装MSYS2的MINGW64,然后安装Clang编译器和GCC编译器;Linux与MacOS下都可以安装Clang和GCC编译器。

笔者的MacOS是Clang 9,没有升级到新版本,所以没有clangdclang-tidy需要自行安装:

  1. clangd
    目前虽然clang 18都出来了,但是clangd的最新稳定版本是17.03,MacOS系统下载
    clangd-mac-17.0.3.zip后解压后把clangd放到/usr/local/bin即可。
  2. clang-tidy
    可以直接使用pip install clang-tidy来安装。

VSCode中安装插件clangd

在这里插入图片描述
为了更好地管理项目的构建,建议使用目前流行的cmake来构建,所以还需要安装插件cmakecmake-tools,如果喜欢使用lldb来调试代码,需要安装插件CodeLLDB

在这里插入图片描述

注意:clangd与微软的C/C++插件有冲突,如果使用clangd则需要禁用C/C++插件的intelliSenseEngine,在settings.json中添加配置:

"C_Cpp.intelliSenseEngine": "disabled",

或者直接卸载掉C/C++插件。

二、配置

我们知道,C与C++的语法以及使用的头文件是不完全一样的,要想让clangd按我们的想法去处理,就需要进行一些配置。

clangd的配置有两种方式,一种是项目级的,另一种是用户级的。
项目级的只需要在项目的根目录添加一个.clangd的配置文件即可。
用户级的就需要根据不同的操作系统来添加config.yaml配置文件到不同的路径下:

  • Windows: %LocalAppData%\clangd\config.yaml, 比如C:\Users\witton\AppData\Local\clangd\config.yaml
  • macOS: ~/Library/Preferences/clangd/config.yaml
  • Linux and others: $XDG_CONFIG_HOME/clangd/config.yaml, 通常为:~/.config/clangd/config.yaml.

不管是.clangd还是config.yaml它的格式都是yaml格式,配置方法完全一样。如果既配置了用户级的config.yaml,又配置了项目级的.clangd,则会同时启用相关配置,如果发生冲突,用户级的config.yaml优先级最高,其次是内部项目级,最后是引用的外部项目级。

一个C/C++项目可能既有C语言文件,也有C++文件,前面有提到,它们是需要有不同的处理方式,C语言需要使用C语言的标准,C++需要使用C++的标准。比如C使用C17标准,C++使用C++23,可以分别配置不同的块,为不同的扩展名使用不同的编译参数,块与块之间使用---来分隔:

# 这段为C++代码配置
If:
  PathMatch: [.*\.cpp, .*\.cxx, .*\.cc, .*\.h, .*\.hpp, .*\.hxx]
CompileFlags:
  Add: [-std=c++23]
---
# 这段为C代码配置
If:
  PathMatch: [.*\.c]
CompileFlags:
  Add: [-std=c17]

前面有说过clangd还能够整合clang-tidy进行C/C++代码的静态分析,实时对代码进行诊断,在配置文件中添加:

Diagnostics:
  ClangTidy:
    Add: ["*"]

并在settings.json中添加配置:

"clangd.arguments": [
    "--clang-tidy"
 ]

启用clang-tidy。这样配置会把所有提示都给出来,但有些提示不会影响代码质量,只是为了更加规范罢了,比如未引用的变量之类的等等。笔者把笔者的配置贴出来:

Diagnostics:
  ClangTidy:
    Add: ["*"]
    Remove:
    [
      abseil*,
      altera*,
      fuchsia*,
      llvmlib*,
      zircon*,
      google-readability-todo,
      readability-braces-around-statements,
      hicpp-braces-around-statements,
      misc-unused*
    ]
    CheckOptions:
      WarnOnFloatingPointNarrowingConversion: false
---
# 这段为C++代码配置
If:
  PathMatch: [.*\.cpp, .*\.cxx, .*\.cc, .*\.h, .*\.hpp, .*\.hxx]
CompileFlags:
  Add: [-std=c++23]
---
# 这段为C代码配置
If:
  PathMatch: [.*\.c]
CompileFlags:
  Add: [-std=c17]

settings.json:

  "C_Cpp.intelliSenseEngine": "disabled",
  "clangd.onConfigChanged": "restart",
  "clangd.arguments": [
    "--clang-tidy",
    "--clang-tidy-checks=performance-*,bugprone-*",
    "--query-driver=/usr/bin/clang,/usr/bin/clang++",
    "--all-scopes-completion",
    "--completion-style=detailed",
    "--function-arg-placeholders",
    "--header-insertion=iwyu",
    "--pch-storage=disk"
  ],
  "cmake.exportCompileCommandsFile": true,

如果想要笔者前面所示的提示到代码编辑中,可以安装usernamehw.errorlens插件:

在这里插入图片描述
如果对你有帮助,欢迎点赞收藏!

  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
VSCode是一款轻量级的代码编辑器,而clangd是Clang提供的一个语言服务器,用于提供C/C++代码的智能补全、代码导航、重构等功能。通过在VSCode中配置clangd,可以使得在C/C++开发中拥有更好的开发体验。 以下是配置VSCodeclangd的步骤: 1. 安装VSCode:前往VSCode官网下载并安装最新版本的VSCode。 2. 安装C/C++扩展:在VSCode中搜索并安装C/C++扩展,该扩展提供了对C/C++语言的支持。 3. 安装clangd:根据操作系统选择合适的方式安装clangd。在Windows上,可以通过MSYS2或者Scoop来安装clangd。在MacOS上,可以通过Homebrew来安装clangd。 4. 配置clangd路径:在VSCode中打开设置(快捷键Ctrl + ,),搜索"C_Cpp: Clangd Path",将clangd的路径配置到该设置项中。 5. 配置编译器路径(可选):如果你的项目需要使用特定的编译器,可以在VSCode中打开设置,搜索"C_Cpp: Default Compiler Path",将编译器的路径配置到该设置项中。 6. 打开C/C++项目:在VSCode中打开你的C/C++项目文件夹。 7. 配置编译选项(可选):如果你的项目需要特定的编译选项,可以在项目文件夹中创建一个名为".vscode"的文件夹,并在该文件夹中创建一个名为"c_cpp_properties.json"的文件。在该文件中配置你的编译选项。 8. 开始使用clangd:现在,你可以在VSCode中开始使用clangd提供的功能了。例如,当你输入代码时,clangd会自动提供代码补全建议;当你点击函数或变量时,clangd会提供相关的定义和引用;当你重构代码时,clangd会提供重构建议等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值