【问题标题】:Generic solution to Eclipse CDT's symbol 'X' could not be resolved?无法解决 Eclipse CDT 符号“X”的通用解决方案?
【发布时间】:2013-03-21 20:25:36
【问题描述】:

我有一个包含 C++ 和 C 文件的项目。代码编译运行正常,但我需要摆脱以下错误:

符号“ERANGE”无法解析

我能够用这两个文件重现它(Ubuntu 上最新的 x64 Elipse Juno):

main.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; }

在 ERANGE 上正确执行 Open Declaration 会将我带到 /usr/include/asm-generic/errno-base.h 文件。

以下类似问题的解决方法无效:

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

唯一可行的解​​决方案是完全禁用 Symbol is not resolved 错误,但这会导致我错过真正的问题。

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

【问题讨论】:

  • 我不知道这是否会对您有所帮助,但我发现 CDT 索引器并不总是正确或可靠地更新自身。当事情不同步时,右键单击项目并选择 Index |刷新所有文件。这通常可以为我解决这些类型的问题。

标签: c++ c eclipse-cdt


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 2012-06-03
    • 1970-01-01
    相关资源
    最近更新 更多