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

C语言中如何在多个文件中引用同一个结构体
1 引用类型。需要将结构体定义与头文件中(.h文件),然后在需要引用类型的源文件(.c)中,均引用该头文件,即可使用该类型。2 引用全局变量。要引用全局变量,需要先引用类型,之后在一个源文件中定义全局变量,在其它源文件中声明该全局变量,即可使用。比如结构体为struct test, 定义全局变量为 struct...

c语言如何在多个c文件里同时使用一个结构体?
可以使用全局变量,例如:头文件声明:struct MyStruct{...}; 在源文件3声明定义变量:Mystruct my_1; 在原文件1,2的文件头声明,extern Mystruct my_1(表示该变量是在其它文件中声明定义的),那么这三个文件使用的都是同一个全局变量 ...

C语言中定义一个结构体如何在不同的.C文件中使用。
1.c中定义一个该结构体类型的全局变量struct test mode;4.h中extern struct test mode;其他.c文件就可以直接使用这个结构体变量了,并且是共用的

C语言源文件之间的自定义类型(结构体)如何相互引用?
一个示例如下(项目包含两个文件 Source.cpp,Source1.cpp 1. Source1.cpp源代码如下:\/\/Source1.cppstruct people{ int id; int age;};2. Source.cpp源代码如下:\/\/Source.cpp#include<stdio.h>#include "Source1.cpp"int main(){ struct people Tommy = { 1, 21 }; printf("...

c语言中 多文件中的 结构体调用 需要注意什么?为什么我的使用中总提示...
将这两个文件放到同一级目录,在主文件所在的文件(main)的头部 include "Felname.C";不要把那个文件写好后才进行这个操作,两个文件随时要保持同步,写下编译一下,两个文件对接好后,再展开,不过写的同时,要多编译。有错误在一个文件不会出现,到那个文件会出现。因为C本身就是面向过程的,...

C语言编程 结构体让多个CPP使用
变量声明不能放在头文件中,因为很容易造成重定义。假如有如下结构体 typedef struct A { char a[10];} A;那在main函数所在的cpp中,这样定一个该结构体的变量:A a;在其他需要使用该变量的cpp文件中,加如下语句:extern A a;这样其他cpp文件也就可以用了。

c语言中,一个文件中的函数想用另一个文件中定义的结构体怎么办,用ex...
结构体在头文件中定义,然后要使用该结构体的源文件直接导入该头文件即可。例:结构体Node \/\/Node.h文件#ifndef NODE_H#define NODE_Hstruct Node{ int data; Node* next;};#endif\/\/main.cpp文件#include "Node.h"int main(){ struct Node n; n.data = 0; n.next = NULL...

在c语言中,建立一个工程,当多个源文件要使用结构体变量时,我们应该在...
a.c int var;\/\/定义的地方 b.c extern int var;\/\/声明表明你在其它地方定义过,然后就可以用了

这是关于C语言的问题:如何实现跨文件调用结构体变量.
写个头文件 c.h 声明 一个结构体类型 struct STU { int x;int y;};定义结构体变量s的文件b.c include "c.h"struct STU s; \/* 不加extern ,默认认为extern *\/ a.c 调用b.c里定义的全局变量s include <stdio.h> include "c.h" \/* struct STU这个类型的定义(或者说声明)在这个...

C语言在一个函数里面定义了一个结构体,怎么在另外一个函数里面使用?
在另外一个函数里面使用的源代码如下:include"stdio.h"include "conio.h" \/\/---添加这个头文件,因为getch()函数来自它,否则编译会有警告 struct student \/*定义结构体*\/ { void main(){ void data_in(struct student putin[]);void data_out(struct student *p);void data_pout(struct ...

相似回答