weixin_45511299 2023-10-09 16:24 采纳率: 50%
浏览 1506
已结题

vscode 用keil assistant插件打开keil工程时,变量和函数无法自动跳转到定义(显示未定义标识符)但是只要在该变量或函数定义所在文件,对任意一行代码修改后却可以跳转。

vscode 用keil assistant插件打开keil工程时,变量和函数无法自动跳转到定义(显示未定义标识符),但是只要在该变量或函数定义所在文件,对任意一行代码修改后却可以跳转。
下面的配置都已经修改过了:

    "C_Cpp.intelliSenseEngineFallback": "Disabled", //需要添加的
    "C_Cpp.intelliSenseEngine": "Tag Parser",  //  需要添加的

所有头文件都可以跳转。
到底是怎么回事啊?

  • 写回答

18条回答 默认 最新

  • Leodong. 2023-10-09 16:42
    关注
    获得0.45元问题酬金

    该回答通过自己思路及引用到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引擎来解析代码。

    如果问题仍然存在,您可以尝试以下方法:

    1. 清除缓存: 在VS Code中,按下Ctrl+Shift+P(或者Cmd+Shift+P),输入"C/C++: Clear IntelliSense Cache",选择该选项以清除C/C++的IntelliSense缓存。然后重新加载工程,看看问题是否解决。

    2. 强制重新索引: 在VS Code中,按下Ctrl+Shift+P(或者Cmd+Shift+P),输入"C/C++: Rescan Workspace",选择该选项以强制重新索引工作区的代码。这将重新解析代码并更新IntelliSense的数据库。

    3. 检查工程配置: 确保您的Keil工程配置正确,并且所有的源文件和头文件都被正确地包含在工程中。确保所有的源文件都与正确的编译选项进行编译,并且生成的目标文件正确地链接在一起。

    4. 检查文件路径: 确保工程中的源文件和头文件的路径是正确的,并且与Keil Assistant插件的配置相匹配。如果文件路径不正确,IntelliSense可能无法正确解析代码。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月17日
  • 创建了问题 10月9日