我有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)
{ }
答案 0 :(得分:0)
这取决于您是否已将main.c中的struct f flag;
声明为全局或本地。如果在函数内部声明了它,则必须在函数外部移动声明。
答案 1 :(得分:0)
问题的解决方案是extern struct f flag应该在pic.h中。这在某种程度上是有意义的,在恰当之后放置它。我还要感谢大家的意见。