请问编程高手如何正确地在由多个文件连接而成的c程序中声明结构体外部变量?

来源:百度知道 编辑:UC知道 时间:2024/05/22 12:18:40
我的程序由多个文件连接而成,将所有的外部变量都放在main.c中声明,其它用到该外部变
量的文件(如change.c)在开头用extern声明。先生成了prj文件,但在编译到change.c时总
遇到Error:undefined structure 'a'等一系列未定义结构体a或结构体a中变量的Error.相关
具体程序如下。(需要说明的是结构体a比较特殊,由它声明了一个结构体数组。a里面还包含
一个结构体f,由f又声明了一个结构体数组)
main.c文件:
……
struct f
{
int x;
int y;
int direction;
};
struct a
{
int x;
int y;
int color;
int direction;
int directiontwo;
int fireplay;
struct f fire[5];
}amy[20];
……

change.c文件:
……
extern struct a amy[];
extern struct f;
……
请问大家,是不是change.c中对结构体的extern 声明有问题?结构体应该如何用extern来声明?

不是这样的!
应该把结构体放到一个.h文件中,其他的两个文件包含这个.h。

globe.h文件:
……
struct f
{
int x;
int y;
int direction;
};
struct a
{
int x;
int y;
int color;
int direction;
int directiontwo;
int fireplay;
struct f fire[5];
}amy[20];
……

main.c文件:
#include "globe.h"
......

change.c文件:
#include "globe.h"