This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CODECOMPOSER: Theia :' Go to Definition' goes to declaration 而不是 definition.

Guru**** 1825110 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1434221/codecomposer-theia-go-to-definition-goes-to-declaration-instead-of-definition

器件型号:CODECOMPOSER

工具与软件:

您好!

如果我右键点击在另一个 C 文件中定义的引用函数、然后点击"Go to Declaration"、则该函数会转至.h 文件中的声明。

但是、如果我右键点击并点击"Go to Definition"、它也会转到.h 文件中的声明。 期望是转到.c 文件中的定义。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    期望使用.c 文件中的定义。

    是的、这是预期结果、除非源文件不可用(即库的一部分等)。  

    如果源代码可用且是项目的一部分、则"转到定义"通常有效。 您的环境是这样吗? 您能举一个例子、说明失败了吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ki、

    我可以看到它适用于单核工程、但我设计了一个多核示例(随附)、该示例复制了我们工程中的问题。

    我们的多核项目对两个或多个内核使用一些通用代码。 我们不会在核心项目中维护同一代码的多个副本、而是在系统项目下保留源代码"repo"、然后使用来自各个核心项目的链接。 从编译和链接的角度来看、这在 Eclipse 和 Theia 中似乎都运行良好。 但是、"转至定义"(索引器?) 无法解析系统工程中源代码(.c)中定义的位置。

    这不能完全无视系统工程中的文件、因为"Go to Declaration"适用于在系统工程中打开标头、而这只是.c 文件、这是一个问题。

    e2e.ti.com/.../empty_5F00_am263px_2D00_cc_5F00_system_5F00_nortos.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不能完全忽视系统项目中的文件、因为"转到声明"适用于在系统项目中打开头文件

    由于在编译器中有头文件的路径包含搜索路径、因此解析器将知道头文件所在的位置。

    然而、"转到定义"(索引器?) 无法解析系统项目中源代码(.c)中定义的位置。[/QUOT]

    链接文件存在问题。 我认为解析链接文件存在当前限制、这可能会在未来的 CCS 版本中得到解决(我需要检查一下)。 不过、如果像您在所提供的示例中那样将源代码明确添加到工程中、则会找到该源代码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但是、如果像您在提供的示例中那样将源代码显式添加到项目中、则可以使用该代码

    抱歉、在示例中犯了一个错误。 我不想添加文件的副本、而是想添加链接。 在 Eclipse 中、Drag'n'drop 提示复制或链接文件、但 Theia 只是复制我当时忽略的文件*。

    在任何情况下、我同意它适用于复制的文件、但不适用于链接的文件。 我们希望以后可以添加这些内容。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为解析链接文件目前存在限制、并且这一问题可能会在未来的 CCS 版本中得到解决(我需要检查此问题)。

    我确认了以上所有内容。 这是使用的解析器的一个已知限制、我们的路线图上也会对其进行自我解决。 很遗憾、我没有更多详细信息。