【问题标题】:Eclipse CDT: doesn't show name a macro appears inEclipse CDT:不显示宏出现的名称
【发布时间】:2016-09-14 10:24:57
【问题描述】:

当搜索宏引用时,Eclipse 显示文件+行,宏被引用。我要file+line+函数

搜索其他类型的数据(例如函数)将按预期显示文件+行+函数,所以也许应该在 Eclipse 配置中针对宏进行一些调整?

有什么想法吗?

【问题讨论】:

  • 奇怪。在我的 Eclipse 上,它向我显示了定义已翻译的宏。
  • @LP 不确定您的评论是否与我的问题相关 :)
  • @dimba 你能添加一个工具提示的截图吗?
  • @dimba 另一个 CDT 提交者花时间添加了必要的解析信息,现在 CDT 的下一个版本将支持 bugs.eclipse.org/bugs/show_bug.cgi?id=508216

标签: c++ c eclipse ide eclipse-cdt


【解决方案1】:

更新 - 2017 年 1 月

CDT 的下一个版本(CDT 9.3,Eclipse Oxygen 的一部分将于 2017 年 6 月发布)将支持显示包含宏引用的函数。有关详细信息,请参阅Bug 508216

这个答案的其余部分是原始答案。

TL;DR

在 Eclipse CDT 中无法显示引用宏的函数,因为在构建索引时这些信息不包含在索引中。

图片

为了确保我们谈论的是同一件事,我提供了一些视觉效果。

给定一个包含函数、宏和全局变量的简化 C 文件:

示例代码

#define MACRO(X) ((X) + 2)
int function(int);
int global;

int function_results_are_in(void) {
    int i = 0;
    i = MACRO(i);
    i = function(i);
    i += global;
    return i;
}

使用以下使用 C/C++ 索引的方法之一进行搜索(与文件/grep 样式搜索相反):

设置

  • 工作区中的参考使用以下之一进行选择:
    • Shift+Ctrl+G
    • 右键单击 -> 参考 -> 工作区
  • Search 菜单 -> C/C++ Search 并搜索引用,如下图:

结果 - 函数搜索

正如您在搜索函数时看到的那样,结果显示包含函数名称:

结果 - 宏搜索

但是对于宏搜索,没有包含函数名:

引擎盖下

C/C++ 搜索结果中的每个搜索结果都是LineSearchElement.Match。如果它的fEnclosingElementnull 则没有函数可显示。

退后一步,您可以看到 match is created 来自匹配的 IIndexNameMatch.fEnclosingElement 字段由IIndexName.getEnclosingDefinition() 的结果填充。

在宏引用的情况下,IIndexName 的具体类型是PDOMMacroReferenceName,而getEnclosingDefinitionthe implementation 只是return null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    相关资源
    最近更新 更多