问题的可能原因
由于 C/C++ 插件仅在 当前工作区内 对源文件进行检索。因此需要确保你的工作区包含整个工程的所有源文件
比如一般的 keil 项目结构是这样的:
|
+--- Core
|
+--- User
|
+--- Lib
|
+--- MDK
|
+ ----- project.uvprojx
一般情况下导入项目,默认会将 vscode 工作区建在 MDK 目录下,这样 C/C++ 只会在 MDK 目录下进行检索,
如果你的源文件位于上层目录中,这会导致无法正确地跳转定义,只会跳转到头文件中函数的声明处
解决办法
按照如下方法使得工作区包含所有源文件
https://discuss.em-ide.com/d/319
然后执行 Ctrl+Shift+P 打开命令面板,输入 C/C++
进行过滤,然后选择如下命令依次执行

这样 C/C++ 会清除缓存,并重新扫描工作区