c 中结构体变量 如何在其他c文件中声明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c 中结构体变量 如何在其他c文件中声明相关的知识,希望对你有一定的参考价值。

比如我在一个项目中有 stu.c,mm.c 两个c文件,在 stu.c 文件中定义如下一个结构体变量:
typedef struct student

int num;
char name[20];
char sex;
int age;
char addr[30];

struct student stu1=112,"wanglin",m,19,"200 Beijing";
那么我在 mm.c 中要引用并且对此结构体变量的数据进行修改,如何在 mm.c 中声明才能引用呢?

要定义一个struct变量,首先要定义一个结构体变量类型名即struct 结构体名。
例如定义一个按键属性结构体(包含 是否有按键值更新(renew)和按键值(num)两个成员)
struct Key_attribute

unsigned char renew;
unsigned char num;
参考技术A 你可以在 mm.c中用extern声明下,即extern struct student stu1 就可以了。追问

但是报警“unknown struct/union/enum tag”怎么解决啊?声明不行啊

参考技术B extern struct student stu1; 就可以了本回答被提问者采纳

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 中结构体变量 如何在其他c文件中声明的主要内容,如果未能解决你的问题,请参考以下文章

c语言一个结构体如何在多个源文件里面调用?

Keil中C语言模块化编程时全局变量、结构体处理细节

C语言 结构体声明中const成员如何初始化

c语言中如何将结构中变量清空

c语言如何定义结构体变量

C语言编程 结构体让多个CPP使用