注意:本文章解决的插件状态是微软官方的 C/C++ 扩展 (IntelliSense, debugging, and code browsing) 已经启用,按下快捷键Ctrl+Shift+P后输入C/C++: Reset IntelliSense Database无搜索结果,并且是在ubuntu的vscode进行的操作。

如果是SSH/远程开发,需要注意命令可能需要在远程端的命令面板里运行。

在进行以下操作前检查插件的状态 :

操作一:在 VS Code 左侧活动栏点击 Extensions(扩展) 图标(四个方块那个),搜索 @installed C++

  • 确保 Microsoft 出品的 C/C++ 插件显示为“已启用”。

  • 如果旁边有“需要重新加载”的提示,点一下它。

操作二:确保已安装必要的依赖

对于ROS 2,这通常意味着你需要有ROS 2的桌面完整安装,这包括了所有开发工具和库。

运行sudo apt update && sudo apt install ros-humble-desktop-full来确保所有依赖都是最新的。

一、确保插件已”唤醒“

VS Code的插件是懒加载的,如果你只是打开了一个空的编辑器,或者打开的是一个纯文本文件,C/C++: Reset IntelliSense Database 是不会出现在 Ctrl+Shift+P 的列表里的。

操作三:确保你当前打开并聚焦在一个.cpp或.h文件上

接着强制刷新 VS Code 的渲染进程。

  • 按下 Ctrl + Shift + P

  • 输入 Developer: Reload Window 并回车。

(进行一个操作过后重启一下vscode,或者对于当前窗口进行一个刷新)

二、插件冲突

如果你之前用的是 clangd 插件,这可能会导致头文件报错、C++插件不起作用。

它和微软官方的 C/C++ 插件是“竞争关系”,通常我们会禁用其中一个来避免冲突。

!!虽然禁用了 clangd,但如果微软的 C/C++ 插件发现配置里依然指定要用 clangd,它可能会处于“假死”状态。

  1. 按下 Ctrl + , (逗号) 打开设置。

  2. 在搜索框输入:intelliSenseEngine

  3. 确保 C_Cpp: Intelli Sense Engine 被手动设置成了 default

    注意: 如果它被设置成了 Disabled,你所有的 C/C++ 菜单和配置项(如 Edit Configurations)都会消失。

重启过后依旧不起作用,考虑其他会导致插件假死的原因:

在用 Ubuntu 写 ROS 2,有一个细节非常关键:

  • 环境变量: 如果你是在桌面图标直接点开的 VS Code,它可能拿不到 ROS 的路径。

  • 正确做法: 关闭 VS Code。打开终端,输入:

source /opt/ros/humble/setup.bash  # 换成你的版本
code ~/my_ros_ws                   # 从终端打开你的工作空间

现在请尝试: 按下 Ctrl + Shift + P 输入 C/C++: Edit。如果还是搜不到,考虑插件版本的问题

三、回退到先前版本(在这里进行尝试的是1.2.0版本)

第一步:

  1. 在插件面板找到 C/C++ 插件。

  2. 点击插件右下角的齿轮,找到下载特定版本,点击并找到1.2.0版本进行下载

  3. 等待安装完成,右下角会出现 Reload Required,点击重启。

第二步

VS Code 有时候会因为旧的配置冲突而“装死”。请尝试手动重置插件全局配置

  1. 按下 Ctrl + , (逗号) 进入设置。

  2. 搜索 C_Cpp.intelliSenseEngine

  3. 点一下左侧的蓝色线条或小齿轮,选择 "Reset Setting" (重置设置)

  4. 重启 VS Code。

四、验证

如果插件真的活过来了,你的代码应该会发生以下变化:

  1. 代码变色: intmaininclude 会有不同的颜色。

  2. 出现命令: 按下 Ctrl + Shift + P,输入 C/C++,如果能看到一长串列表(如下图),说明彻底修好了。

最后的一点建议: 既然你在写 ROS 2,如果实在修不好官方插件,可以把 clangd 重新启用(但要确保把微软的这个 C/C++ 插件里的 IntelliSense Engine 关掉,避免神仙打架)。

更多推荐