C/C++ 扩展智能提示太慢或无法解析项目

问题

C/C++ 扩展不解析项目,导致源码中的变量、函数都为灰色状态,无法进行跳转。

有时候 log 会报如下错误:

复制代码
Attempting to get defaults from C++ compiler in "compilerPath" property: 'D:/Development/Tools/mingw64/bin/gcc.exe'
Compiler info database not connected - skipping load.
Compiler query command line: D:/Development/Tools/mingw64/bin/gcc.exe -mlongcalls -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -fdiagnostics-color=always -ffunction-sections -fdata-sections -gdwarf-4 -ggdb -mdisable-hardware-atomics -Og -fno-shrink-wrap -fmacro-prefix-map=D:/Development/Workspace/esp32_workspace/xiaozhi-esp32=. -fmacro-prefix-map=C:/Users/ShiinaKaze/esp/v5.4/esp-idf=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -m64 -Wp,-v -E -dM -x c nul
Failed to query compiler. Falling back to 32-bit intelliSenseMode.
Compiler query command line: D:/Development/Tools/mingw64/bin/gcc.exe -mlongcalls -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -fdiagnostics-color=always -ffunction-sections -fdata-sections -gdwarf-4 -ggdb -mdisable-hardware-atomics -Og -fno-shrink-wrap -fmacro-prefix-map=D:/Development/Workspace/esp32_workspace/xiaozhi-esp32=. -fmacro-prefix-map=C:/Users/ShiinaKaze/esp/v5.4/esp-idf=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -m32 -Wp,-v -E -dM -x c nul
Failed to query compiler. Falling back to no bitness.
Compiler query command line: D:/Development/Tools/mingw64/bin/gcc.exe -mlongcalls -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -fdiagnostics-color=always -ffunction-sections -fdata-sections -gdwarf-4 -ggdb -mdisable-hardware-atomics -Og -fno-shrink-wrap -fmacro-prefix-map=D:/Development/Workspace/esp32_workspace/xiaozhi-esp32=. -fmacro-prefix-map=C:/Users/ShiinaKaze/esp/v5.4/esp-idf=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wp,-v -E -dM -x c nul
[01m[Kgcc.exe:[m[K [01;31m[Kerror: [m[Kunrecognized command-line option '[01m[K-mlongcalls[m[K'
[01m[Kgcc.exe:[m[K [01;31m[Kerror: [m[Kunrecognized command-line option '[01m[K-mdisable-hardware-atomics[m[K'

原因

C/C++ 扩展用的语言服务器就是 clangd 的魔改,clangd 会先读取配置,然后再建立索引,这个过程需要一段时间。

如果右下角 language status 没有反应,前往 C/C++ 扩展的设置,将 logging level 调整为 debug 模式,方便查看 C/C++ 扩展运行情况。


c_cpp_properties.json 是一个很重要的文件,用于配置 C/C++ 扩展,所以按照要求填写,例如 ESP IDF 扩展自动生成的配置文件:

json 复制代码
{
  "configurations": [
    {
      "name": "ESP-IDF",
      "compilerPath": "${config:idf.toolsPathWin}\\tools\\xtensa-esp-elf\\esp-14.2.0_20241119\\xtensa-esp-elf\\bin\\xtensa-esp32s3-elf-gcc.exe",
      "compileCommands": "${config:idf.buildPath}/compile_commands.json",
      "includePath": [
        "${config:idf.espIdfPath}/components/**",
        "${config:idf.espIdfPathWin}/components/**",
        "${workspaceFolder}/**"
      ],
      "browse": {
        "path": [
          "${config:idf.espIdfPath}/components",
          "${config:idf.espIdfPathWin}/components",
          "${workspaceFolder}"
        ],
        "limitSymbolsToIncludedHeaders": true
      }
    }
  ],
  "version": 4
}
相关推荐
FlightYe7 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
by209998 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
Rover Ramble8 小时前
C++ 用互斥锁实现读写锁
开发语言·c++
你怎么知道我是队长9 小时前
C++零基础入门第2周:数据类型、运算符与表达式完全指南(附20段可运行代码+避坑清单)
c++
say_fall9 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
雪落漂泊10 小时前
C++算法 滑动窗口篇(下)
开发语言·c++
你怎么知道我是队长12 小时前
C++零基础第3周:if/else、switch、for/while/do-while 控制流完全指南(附20段可运行代码+避坑清单)
java·开发语言·c++
青少儿编程课堂13 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析
c++·python·算法·bfs·信息学竞赛
雷✘14 小时前
C++ 类与对象的初始化机制、成员访问边界与拷贝优化
java·网络·c++
努力实干14 小时前
简单工厂模式(Simple Factory Pattern)——C++
开发语言·c++·简单工厂模式