【c语言】struct结构体实例声明为extern全局变量,供多个文件调用

【c语言】struct结构体实例声明为extern全局变量,供多个文件调用

编码文章call10242025-04-10 20:59:3411A+A-

结构体可以存储不同类型的数据,可以定义一组不同的属性和状态。

extern 修饰符通常用于当有两个或多个文件共享相同的全局变量或函数的时候。利用extern的特性,可以让struct实例,作为公共数据供多个文件使用,例如:

定义结构体:source.h

//结构体
typedef struct {
	int a;
}Source;
//全局变量
extern Source s;

实现结构体:source.c

#include "source.h"
//初始化
Source s = {0};

定义外部文件:file.h,打印结构体的值a

#include 

void printA();

实现:file.c

#include "file.h"

#include "source.h"

void printA() {
//修改a的值为30
	s.a = 30;
//打印结构体的值a
	printf("file a:%d\n",s.a);
}

定义其他文件:other.h,打印结构体的值a

#include 

void printB();

实现:other.c

#include "other.h"

#include "source.h"

void printB() {
//打印结构体的值a
	printf("other a:%d\n",s.a);
}

主函数调用:main.c

#include 

  //引入结构体
#include "source.h"
//引入file
#include "file.h"
//引入other
#include "other.h"

int main() {
		//设置结构体a的值
    s.a = 20;
    //打印结构体a的值
    printf("a:%d\n",s.a);//打印为20
		//打印file中结构体a的值
    printA();//修改了结构体的值,打印值为30
		//打印other中结构体a的值
    printB();//值为30

    return 1;
}

运行结果:

#寻找热爱表达的你#

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4