符号无法解决eclipse CDT

时间:2013-07-04 06:32:38

标签: c eclipse eclipse-cdt

这是一个关于堆栈溢出的常见问题,但我的情况很奇怪,我找不到合适的答案,所以我仍然发布它。

这是一个大型项目,但此问题只包含五个文件:types.h,glob.h,test.c,test.h和main.c

types.h 中的

说我定义了一个结构:

struct s_foo {
    int a;
};
glob.h

struct s_foo *foo;
test.h

中的

#ifndef GLOB_H
#define GLOB_H
extern struct s_foo *foo;
#endif
test.c

中的

#include "types.h"
#include "test.h"
struct s_foo *foo = NULL;
main.c

中的

#include "types.h"
#include "test.h"
...
foo = (struct s_foo *)malloc(sizeof(struct s_foo));

该程序可以通过gcc编译并运行正常,但是eclipse在main.c中给了我这个令人讨厌的错误,符号'foo'无法解析。

任何人都可以告诉我为什么eclipse会给我这个错误?这是因为变量foo的多个定义吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

确保eclipse可以看到你所有的.h文件。对我来说似乎它不包括所有相关的.h文件。

答案 1 :(得分:0)

对于从Visual Studio 2013移植的代码,我在Eclipse上遇到了同样的问题。我最好的猜测是编译器无法进行多次符号扫描。所以我的最终解决方案是在出现错误的文件中再添加一个声明。对于您的情况,我建议您添加

extern struct s_foo * foo;

在文件main.c中的错误语句之前

相关问题