当搜索宏引用时,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 样式搜索相反):
设置
结果 - 函数搜索
正如您在搜索函数时看到的那样,结果显示包含的函数名称:
结果 - 宏搜索
但是对于宏搜索,没有包含函数名:
引擎盖下
C/C++ 搜索 结果中的每个搜索结果都是 LineSearchElement.Match
.如果它是 fEnclosingElement
为null
则没有函数显示。
后退一步,您可以看到 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/