我有一个源文件 ' foo.c ',其中包括 ' foo1.h ' 和 ' foo2.c '。
foo1.h
#include "pthread.h"
#define MACROFOO() PTHREAD_MUTEX_INITIALIZER
// Few other macros
foo2.h
#include "pthread.h"
#define MACROFOO() PTHREAD_MUTEX_INITIALIZER
// Few other macros
foo.c
#include "foo1.h"
#include "foo2.h"
typedef struct mut
{
pthread_mutex_t mut;
int state;
}strMut;
strMut->mutex = MACROFOO();
当我编译 foo.c 文件时,编译器说MACROFOO无法解析。MACROFOO在 foo1.h 和 foo2.h 中都声明了,我已经在 foo.c 中包含了两个头文件
我在这些头文件中几乎没有其他宏,因此我必须包含两个头文件。
这里的神奇之处在于,当我右键单击源文件中的 MACROFOO 并按“转到声明”时,会显示 foo1.h 和 foo2.h。所以基本上编译器知道 MACROFOO 是在哪里声明的。
我正在使用Eclipse JUNO v1.5.1。
我试图从一个头文件中删除 MACROFOO,但问题仍然存在。(但是我不认为从任何头文件中删除 MACROFOO)。
有什么帮助吗?提前致谢。