2010-05-20 78 views
2

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

实施例:

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

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

我并不期望它能完成其中的#define块的全分辨率编译,我只是希望它能够返回我正在搜索的函数的所有调用/声明,而不管#define块环绕它。

其他IDE如SlickEdit能够做到这一点。

有谁知道一种让Eclipse采用这种行为的方法吗?

谢谢。

回答

0

有许多 “错误” 开上了CDT “调用层次” 功能:

所有这些都链接到结合分辨率(也是情况will improve for implicit constructor calls in CDT7.0)。
由于bar()显然在Unreachable #ifdef block之内,因此“绑定解析”可能会完全忽略它。
因此,不完整的校准等级。

0

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

我希望能看到所有调用方法的地方的列表,但我基本上只看到了方法本身的声明。如果我切换到“被调用者”层次,则相同。即使该方法被调用或在同一个文件中调用方法。

相关问题