之前,在使用联合体的时候,外部调用一直编译出错
感谢某大佬:(38条消息) C语言union变量外部调用--记录贴_Ztt300的博客-CSDN博客
解决了此问题,在此特此总结:
C union共用体变量外部调用方法:
1.在声明union共用体的A.h文件中定义联合体名
typedef union
{
float y1;
unsigned char y2[4];
}ops9;
注1:typedef union后创建ops9为共用体数据类型
注2:ops9的位置问题
//常用直接定义共用体变量时,ops9在union的后面,此时ops9是一个特定的共用体类型名
union ops9
{
float y1;
unsigned char y2[4];
};
ops9 x,y;
或://此时没有定义共用体类型名,直接定义共用体变量
union
{
float y1;
unsigned char y2[4];
}x,y;
//如果使用typedef来声明一个新的类型名,此时ops9在分号前,表定义一个新的数据类型名为ops,而ops9为一种共用体
typedef union
{
float y1;
unsigned char y2[4];
}ops9;
2.在声明union共用体的A.c文件中创建联合体变量
ops9 y,x,angle,upperx,uppery,upperangle;
注1:不建议在A.h文件中创建联合体变量,因为避免所有包含了A.h的文件对A.h中的变量重复定义,以避免Error L6200E: symbol multiply defined的报错
详细了解可参考资料:(37条消息) KEIL软件中编译时出现的Error L6200E: symbol multiply defined ...的解决方法_qq斯国一的博客-CSDN博客b补充:symbol multiply defined报错的解决:
3.在B.c外部调用声明
extern ops9 x;
extern ops9 y;
注1:在B.c文件要包含定义联合体名的A.h文件(#include "A.h")