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采用这种行为?
感谢。
答案 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'层次结构,则相同。即使调用该方法或在同一文件中调用方法。