vscode 用keil assistant插件打开keil工程时,变量和函数无法自动跳转到定义(显示未定义标识符),但是只要在该变量或函数定义所在文件,对任意一行代码修改后却可以跳转。
下面的配置都已经修改过了:
"C_Cpp.intelliSenseEngineFallback": "Disabled", //需要添加的
"C_Cpp.intelliSenseEngine": "Tag Parser", // 需要添加的
所有头文件都可以跳转。
到底是怎么回事啊?
vscode 用keil assistant插件打开keil工程时,变量和函数无法自动跳转到定义(显示未定义标识符),但是只要在该变量或函数定义所在文件,对任意一行代码修改后却可以跳转。
下面的配置都已经修改过了:
"C_Cpp.intelliSenseEngineFallback": "Disabled", //需要添加的
"C_Cpp.intelliSenseEngine": "Tag Parser", // 需要添加的
所有头文件都可以跳转。
到底是怎么回事啊?
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
【第一种实现方式】
这个问题可能是由于VSCode的IntelliSense功能没有正确识别到Keil工程中的头文件导致的。你可以尝试以下方法解决这个问题:
1、 确保你的VSCode已经安装了Keil Assistant插件,并且是最新版本。
2、 在VSCode的设置中,搜索"C_Cpp.intelliSenseEngine",将其设置为"Tag Parser"。
3、 在设置中搜索"C_Cpp.intelliSenseEngineFallback",将其设置为"Disabled"。
4、 重启VSCode,然后重新打开Keil工程。
5、 如果问题仍然存在,可以尝试手动添加工程的头文件路径到VSCode的设置中。在设置中搜索"C_Cpp.default.includePath",点击"在settings.json中编辑",将Keil工程的头文件路径添加到数组中,例如:
{
"C_Cpp.default.includePath": [
"${workspaceFolder}/**",
"D:/Keil/ARM/STM32/Include"
]
}
注意将"D:/Keil/ARM/STM32/Include"替换为你的Keil工程的实际头文件路径。
6、 保存设置并重启VSCode,重新打开Keil工程,看看问题是否解决。
【第二种实现方式】
根据您的描述,您在使用VS Code的Keil Assistant插件打开Keil工程时,遇到了变量和函数无法自动跳转到定义的问题。这可能是由于IntelliSense引擎的配置或缓存导致的。
首先,确保您已经按照您提供的配置将IntelliSense引擎设置为"Tag Parser"并禁用了回退选项。这是为了确保VS Code使用正确的IntelliSense引擎来解析代码。
如果问题仍然存在,您可以尝试以下方法:
清除缓存: 在VS Code中,按下Ctrl+Shift+P(或者Cmd+Shift+P),输入"C/C++: Clear IntelliSense Cache",选择该选项以清除C/C++的IntelliSense缓存。然后重新加载工程,看看问题是否解决。
强制重新索引: 在VS Code中,按下Ctrl+Shift+P(或者Cmd+Shift+P),输入"C/C++: Rescan Workspace",选择该选项以强制重新索引工作区的代码。这将重新解析代码并更新IntelliSense的数据库。
检查工程配置: 确保您的Keil工程配置正确,并且所有的源文件和头文件都被正确地包含在工程中。确保所有的源文件都与正确的编译选项进行编译,并且生成的目标文件正确地链接在一起。
检查文件路径: 确保工程中的源文件和头文件的路径是正确的,并且与Keil Assistant插件的配置相匹配。如果文件路径不正确,IntelliSense可能无法正确解析代码。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢