c++ - eclipse CDT : doesn't show name a macro appears in

标签 c++ c eclipse ide eclipse-cdt

当搜索宏引用时,Eclipse 显示文件+引用宏的行。我想 file+line+function.

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

有什么想法吗?

最佳答案

更新 - 2017 年 1 月

CDT 的下一个版本(CDT 9.3,将于 2017 年 6 月发布的 Eclipse Oxygen 的一部分)将支持显示包含宏引用的函数。参见 Bug 508216更多细节。

此答案的其余部分是原始答案。

长话短说

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 样式搜索相反):

设置

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

结果 - 函数搜索

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

function search

结果 - 宏搜索

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

macro search

引擎盖下

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

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

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

关于c++ - eclipse CDT : doesn't show name a macro appears in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37291037/

相关文章:

c++ - 访问 C 中的类变量(Arduino Timezone 库)

c - 为什么xcode允许我在使用C语言时使用bool变量

java - 尝试获取此 Java 代码片段的解释

c - 处理位图 header

java - Eclipse Debug模式: Console output isn't working

java - 是否可以使用birt框架绘制折线图?

c++ - 将字符串分解为单独的元素

c++ - vector 中结构的类型名称是什么

c++ - 如何在 Rust 中优雅地 #include "gtk-layer-shell.h"

java - 使用 Tomcat webapp 访问存储在服务器上的文件