【发布时间】: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