C语言中如何在多个文件中引用同一个结构体

有3个文件:file1.h,file2.c,file3.c。
//file1.h
struct st
{
double u,v;
};

//file2.c
#include "file1.h"
#include "file3.c"
struct st gg;
....

//file3.c
extern struct st gg;
gg.u=3;

上面就是我的程序,报错说gg结构没有定义,可是如果我在file3.c里面#include "file1.h"又说st重复定义,我该怎么办,请大侠指教。

引用结构体有引用类型,和引用全局变量两种方式。

1 引用类型。
需要将结构体定义与头文件中(.h文件),然后在需要引用类型的源文件(.c)中,均引用该头文件,即可使用该类型。

2 引用全局变量。
要引用全局变量,需要先引用类型,之后在一个源文件中定义全局变量,在其它源文件中声明该全局变量,即可使用。
比如结构体为struct test, 定义全局变量为
struct test glabol_test;
在其它文件中,只需要
extern struct test globol_test;
即可在对应文件声明所在行之下进行调用。

PS:该声明部分,也可以写在定义结构体的头文件中。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
在包含结构体的文件开始加一行
#pragma once
这样只编译一次本回答被提问者采纳
第2个回答  2018-02-28
把结构体定义在一个公共头文件里 然后都包含这个头文件
第3个回答  2007-05-15
//file2.c
#include "file1.h"
#include "file3.c"
st gg;
第4个回答  2007-05-15
#ifndef
相似回答