VSCode的clangd插件简单介绍和使用

1、介绍

帮助开发者编写、理解和 通过提供以下条件来改进C/C++代码:

  • 代码补全
  • 编译错误与警告
  • 首选定义与交叉引用
  • 悬停信息与内嵌提示
  • 包括管理层
  • 代码格式化
  • 简单重构

clangd详细的介绍和可参考:VS Code 插件 clangd的用法 - newtonltr - 博客园

注意:

你必须告诉clangd你的项目是如何构建的(编译标志)。你的构建系统通常可以生成一个compile_commands.json文件(例如,通过设置 ,使用 CMake)DCMAKE_EXPORT_COMPILE_COMMANDS=1

复制代码
[
  { "directory": "/home/user/llvm/build",
    "arguments": ["/usr/bin/clang++", "-Irelative", "-DSOMEDEF=With spaces, quotes and \\-es.", "-c", "-o", "file.o", "file.cc"],
    "file": "file.cc" },

  { "directory": "/home/user/llvm/build",
    "command": "/usr/bin/clang++ -Irelative -DSOMEDEF=\"With spaces, quotes and \\-es.\" -c -o file.o file.cc",
    "file": "file2.cc" },

  ...
]

可参考官网:clangd - Visual Studio Marketplace

2、安装

(1)clangd插件安装

(2)clangd的服务器安装

linux下的安装命令sudo apt-get install clangd

其它平台安装可参考:VS Code 插件 clangd的用法 - newtonltr - 博客园

3、VSCode使用

demo的tree路径如下:

复制代码
.
├── CMakeLists.txt
├── include
│   └── DataProcessor.h
├── main.cpp
└── src
    └── DataProcessor.cpp

(1)CMakeLists.txt

复制代码
cmake_minimum_required(VERSION 3.16.3)

project(test)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON) #生成compile_commands.json

include_directories(include)
add_executable(${PROJECT_NAME} main.cpp ./src/DataProcessor.cpp)

(2)code

复制代码
#include <iostream>
#include <assert.h>
#include <thread>
#include "DataProcessor.h"
int cnt = 0;
void func(){
    if(cnt < 3){
        printf("func i =%d\n",cnt);
        cnt++;
        func();
    }
}

int main(){
    DataProcessor p;
    p.process("hello");
    p.process("world");

    std::cout << "Result = " << p.result() << std::endl;
    #if 0
    printf("hello world\n");
    func();
        while(cnt < 30*10000){
        cnt++;
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }
    #endif
    return 0;
}

DataProcessor.cpp

复制代码
#include "DataProcessor.h"
#include <iostream>

// Impl 的完整定义只在 cpp 中
class DataProcessor::Impl {
public:
    void process(const std::string& data) {
        std::cout << "Processing data: " << data << std::endl;
        result_ += static_cast<int>(data.size());
    }

    int result() const {
        return result_;
    }

private:
    int result_ = 0;
};

DataProcessor::DataProcessor()
    : impl_(std::make_unique<Impl>()) {}

DataProcessor::~DataProcessor() = default;

void DataProcessor::process(const std::string& data) {
    impl_->process(data);
}

int DataProcessor::result() const {
    return impl_->result();
}

DataProcessor.h

复制代码
#pragma once
#include <memory>
#include <string>

class DataProcessor {
public:
    DataProcessor();
    ~DataProcessor();              // 必须在 cpp 中定义

    void process(const std::string& data);
    int result() const;

private:
    // Impl 是一个"只为 DataProcessor 服务"的实现类
    class Impl;

    std::unique_ptr<Impl> impl_;
};

(3) build

使用CMake生成可执行的工程文件

(4)手段指定compile_commands.json目录

打开settings.json文件,添加下面的字段clangd配置

然后依次执行下面的2个操作:

从下面可以看出clangd已经生效:

相关推荐
计算机安禾2 小时前
【数据结构与算法】第35篇:归并排序与基数排序
c语言·数据结构·vscode·算法·排序算法·哈希算法·visual studio
仟人斩2 小时前
Windows 下把 VSCode 加入右键菜单(注册表方案)
windows·vscode·上下文菜单
樂油3 小时前
Claude Code的安装并连接VScode(使用CC Switch或ollama连接)
vscode·ollama·claude code·cc switch
北冥有羽Victoria5 小时前
OpenCLI 操作网页 从0到1完整实操指南
vscode·爬虫·python·github·api·ai编程·opencli
Ar-Sr-Na5 小时前
STM32现代化AI开发指南-VSCode环境配置(macOS)
c语言·人工智能·vscode·stm32·嵌入式硬件·硬件工程
Renlijuande6 小时前
VSCode + GitHub Copilot + C语言环境(MinGW)配置攻略(2026版)
vscode·github·copilot
十五年专注C++开发8 小时前
Linux 下用 VS Code 高效调试(二)
linux·c++·windows·vscode
学嵌入式的小杨同学8 小时前
STM32 进阶封神之路(四十一)FreeRTOS 中断管理、软件定时器、内存管理与低功耗模式|工业级实战完整版
vscode·stm32·单片机·嵌入式硬件·mcu·智能硬件·嵌入式实时数据库
weixin_423533991 天前
【Windows11离线安装anaconda、python、vscode】
开发语言·vscode·python
爱分享的阿Q1 天前
STM32现代化AI开发环境搭建:从Keil到VSCode+AI的范式转移
人工智能·vscode·stm32