这是堆栈溢出的常见问题,但我的情况很奇怪,我找不到合适的答案,所以我仍然发布它。
这是一个大型项目,但这个问题只包含五个文件: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 的多重定义吗?
谢谢!