在一个头文件中定义struct并在另一个头文件中使用它时出现struct错误

时间:2013-04-15 14:04:32

标签: c

我有4个文件= pic.h,main.c,framehandle.c和framehandle.h

pic.h和framehandle.h都包含在我的主要内容中:

#include "pic.h"
#include "framehandling.h"

pic.h具有以下结构定义。

struct f
{
    unsigned sleep : 1;
    unsigned push  : 1;
    unsigned rx    : 1;
    unsigned tx    : 1;
    unsigned validPacket : 1;
};

我使用

在main.c文件中声明了这个结构
struct f flag; 

当我尝试在framehandle.c中使用它时,我得到了一个我不明白的错误。

要解决这个问题,我在framehandle.h中添加以下内容:

extern struct f flag;

然而,编译器仍然抱怨在framehandle.c中没有声明标志

我做错了什么? 不会是extern struct f flag;应该告诉编译器看看除此之外的其他地方? 不会把它放在主题标题内是正确的位置吗?

- 编辑 -

我正在添加包含文件和变量declerations的序列

#include "pic.h"
#include "framehandling.h"

struct f flag;

void main(void)
{ }

2 个答案:

答案 0 :(得分:0)

这取决于您是否已将main.c中的struct f flag;声明为全局或本地。如果在函数内部声明了它,则必须在函数外部移动声明。

答案 1 :(得分:0)

问题的解决方案是extern struct f flag应该在pic.h中。这在某种程度上是有意义的,在恰当之后放置它。我还要感谢大家的意见。