2013-03-19 78 views
4

我有一个C++和C文件的项目。该代码编译并运行正常,但我需要摆脱以下错误:Eclipse CDT的符号'X'的通用解决方案无法解析?

Symbol 'ERANGE' could not be resolved

我能够与这两个文件(最新的x64 Elipse朱诺在Ubuntu)重现它:

为主。 H:

#ifndef MAIN_H_ 
#define MAIN_H_ 

extern "C" { 
#include <errno.h> 
} 

#endif /* MAIN_H_ */ 

main.cpp中:

#include <cerrno> 
#include <cassert> 
#include "main.h" 

int main(int argc, char * argv[]) { 
    assert(errno != ERANGE); // <-- CDT ERROR here 
    return 0; } 

打开Declar ERANGE上的正确将我带入/usr/include/asm-generic/errno-base.h文件。

以下的解决方法,以类似的问题没有工作:

  • 设置索引 - >使用积极构建配置
  • 手动添加ERANGE符号项目路径和符号
  • 添加主.cpp至首选项 - > C/C++ - >代码分析 - >符号未解析 - >自定义选定... - >范围 - >排除模式

将工作的唯一解决方案是禁用符号未完全解决错误,但这会导致我错过真正的问题。

编辑: CDT的bug提交https://bugs.eclipse.org/bugs/show_bug.cgi?id=404017

+0

我不知道这是否会对您有所帮助,但我发现CDT索引器并不总是正确或可靠地进行更新。当事情不同步时,右键单击项目并选择Index |清新所有文件。这通常为我解决这些类型的问题。 – 2013-03-19 16:48:43

回答

0

看起来像在Eclipse CDT代码分析工具(codan)的错误。我建议提交一个错误报告here