怎样在C语言中用H头文件声明一个外部struct变量
2个回答
展开全部
要定义一个struct变量,首先要定义一个结构体变量类型名 即struct 结构体名
例如定义一个按键属性结构体(包含 是否有按键值更新(renew)和按键值(num)两个成员)
struct Key_attribute{unsigned char renew;
unsigned char num;};到此只是定义了一个类型名为 struct Key_attribute的结构体变量类型,仅仅是定义了一个类型而已,不生成代码,它的的属性和 int ,char,一样,只是一个类型说明。
有了类型之后就可以像 int i;定义i为一个整型变量一样,利用刚刚声明过的结构体变量类型struct Key_attribute定义一个类型属性如struct Key_attribute(包含 两个unsigned char 无符号字符型变量 成员)的结构体变量了。
如 struct Key_attribute Key; //就定义了Key 为一类型为struct attribute 的结构体变量 此时Key 就会产生代码,占用内存了。
具体应用如下
在KEY.H头文件中声明Key为一外部结构体变量
#ifndef _KEY_H_
#define _KEY_H_
。。。。
struct Key_attribute//定义一个名为 struct Key_attribute 的结构体类型。类型属性为包含两个无符号字符型变量成员{unsigned char renew;
unsigned char num;};//到此就定义好 struct Key_attribute 类型了,只要C文件中包含 "KEY.H"就可以直接像用 int 定义变量一样,定义struct Key_attribute 类型的结构体变量了
//如果 file1.c中包含 "KEY.H" 并定义了 struct Key_attributeKey;则只要在"KEY.H"文件中用一条外部变量声明 extern struct Key_attribute Key,其它文件只要包含"KEY.H"就可以对结构体变量Key进行操作了。
extern struct Key_attribute Key; //声明变量Key 为一属性为struct Key_attribute的外部结构体变量,任何包含"KEY.H"都可以不用再次声明Key为外部变量而直接使用结构体变量Key了。
//这样做的好处是,如果在头文件里面定义变量则编译器会为调用头文件里的同一变量的不同文件分配不同的存储空间,造成存储空间浪费。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询