0

我有 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 标志;应该告诉编译器在其他地方寻找声明?不会把它放在主题标题中是正确的地方吗?

- 编辑 -

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

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

struct f flag;

void main(void)
{ }
4

2 回答 2

0

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

于 2013-04-15T14:07:07.577 回答
0

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

于 2013-04-18T07:58:06.453 回答