Eclipse调用层次结构跳过未定义的#ifdef区域中的调用

时间:2010-05-20 18:37:19

标签: eclipse eclipse-cdt

Eclipse CDT中的“调用层次结构”和“声明”功能省略了未定义(灰色)#ifdef区域中存在的结果。

示例:

void blah(void) {
#ifndef ABC  
   foo();
#else         //line is greyed out
   bar();     //line is greyed out
#endif        //line is greyed out
}

foo()的调用层次结构将blah()列为调用者; bar()的调用层次结构不会列出blah()。

我不希望它完全解析哪些#define块会被编译,我只是希望它返回我正在搜索的函数的所有调用/声明,而不管周围的#define块它

其他IDE(如SlickEdit)可以执行此操作。

有没有人知道如何让Eclipse采用这种行为?

感谢。

2 个答案:

答案 0 :(得分:0)

CDT“Call Hierarchy”功能上打开了许多“错误”:

所有这些都与绑定分辨率(情况will improve for implicit constructor calls in CDT7.0)相关联。) 由于bar()明显在Unreachable #ifdef block之内,因此“绑定解析”可能会完全忽略它 因此,不完整的cal层次结构。

答案 1 :(得分:0)

我在Windows 7 64Bit Ultimate上使用Eclipse 3.6.2和PDT 2.x.

我希望看到调用该方法的所有地方的列表,但是我基本上只看到方法本身的声明。如果我切换到'callee'层次结构,则相同。即使调用该方法或在同一文件中调用方法。