Eclipse CDT: 不显示宏出现的名称
Eclipse CDT: doesn't show name a macro appears in
搜索宏引用时,Eclipse 会显示宏引用的文件+行。我要file+line+function.
搜索其他类型的数据(例如函数)将按预期显示文件+行+函数,所以也许应该在 Eclipse 配置中为宏调整一些东西?
有什么想法吗?
更新 - 2017 年 1 月
CDT的下一个版本(CDT9.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++ 索引的方法之一进行搜索(与 file/grep 样式搜索相反):
设置
- 工作区中的引用 选择使用以下之一:
- Shift+Ctrl+G
- Right-click -> 引用 -> 工作区
- Search menu -> C/C++ Search 并搜索参考资料,如下图:
结果 - 函数搜索
正如您在搜索函数时看到的那样,结果显示包含的函数名称:
结果-宏搜索
但是对于宏搜索,没有包含函数名:
引擎盖下
C/C++搜索结果中的每个搜索结果是LineSearchElement.Match
. If its fEnclosingElement
是null
则没有功能显示。
退一步看match is created from a matching IIndexName
。 Match.fEnclosingElement
字段由 IIndexName.getEnclosingDefinition()
.
的结果填充
在宏引用的情况下,IIndexName
的具体类型是 getEnclosingDefinition
的 PDOMMacroReferenceName
, and the implementation 只是 return null
。
搜索宏引用时,Eclipse 会显示宏引用的文件+行。我要file+line+function.
搜索其他类型的数据(例如函数)将按预期显示文件+行+函数,所以也许应该在 Eclipse 配置中为宏调整一些东西?
有什么想法吗?
更新 - 2017 年 1 月
CDT的下一个版本(CDT9.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++ 索引的方法之一进行搜索(与 file/grep 样式搜索相反):
设置
- 工作区中的引用 选择使用以下之一:
- Shift+Ctrl+G
- Right-click -> 引用 -> 工作区
- Search menu -> C/C++ Search 并搜索参考资料,如下图:
结果 - 函数搜索
正如您在搜索函数时看到的那样,结果显示包含的函数名称:
结果-宏搜索
但是对于宏搜索,没有包含函数名:
引擎盖下
C/C++搜索结果中的每个搜索结果是LineSearchElement.Match
. If its fEnclosingElement
是null
则没有功能显示。
退一步看match is created from a matching IIndexName
。 Match.fEnclosingElement
字段由 IIndexName.getEnclosingDefinition()
.
在宏引用的情况下,IIndexName
的具体类型是 getEnclosingDefinition
的 PDOMMacroReferenceName
, and the implementation 只是 return null
。