C语言中如何在多个文件中引用同一个结构体
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:该声明部分,也可以写在定义结构体的头文件中。 参考技术A 在包含结构体的文件开始加一行
#pragma once
这样只编译一次本回答被提问者采纳 参考技术B 把结构体定义在一个公共头文件里 然后都包含这个头文件 参考技术C //file2.c
#include "file1.h"
#include "file3.c"
st gg; 参考技术D #ifndef
c语言如何在多个c文件里同时使用一个结构体?
在多个c文件里同时使用一个结构体内的所有变量,就是一个结构体内的所有变量的值在各个c文件内都一样,同步使用
可以使用全局变量,例如:头文件声明:struct MyStruct.......; 在源文件3声明定义变量:Mystruct my_1; 在原文件1,2的文件头声明,extern Mystruct my_1(表示该变量是在其它文件中声明定义的),那么这三个文件使用的都是同一个全局变量 参考技术A struct name
int x;
double y;
type a;
type b;
用的时候要用struct name c;
c.x是c的成员x
可以定义别名
typedef struct name Name;
Name c;
或者直接定义别名
typedef struct
int a;
int b;
Name;
以上是关于C语言中如何在多个文件中引用同一个结构体的主要内容,如果未能解决你的问题,请参考以下文章