Union定义变量进行外部调用的方法

一、现象:

首先在文件1.c对应的头文件1.h中有

union  _uintbyte
{
    UINT16 _uint;

    UINT8 _uchar[2]; 

} Angle;

如果想在文件2.c中调用变量Angle就必须用到变量的外部调用,也就是想到用extern 。

然而,在文件2.c对应的头文件2.h中这样写:

1、

extern _uintbyte  Angle;

编译通不过。

2、

extern  union  _uintbyte
{
    UINT16 _uint;

    UINT8 _uchar[2]; 

} Angle;          

同样编译通不过。

 

二、原因:

extern后面必须跟数据类型,使用共用体名称(如_uintbyte)是无效的。

三、解决方法:

将union _uintbyte使用typedef 进行类型定义,即:

在头文件3.h中定义:

typedef  union  _uintbyte
{
    UINT16 _uint;

    UINT8 _uchar[2]; 
};

在文件1.c中引用3.h,在1.c对应的头文件1.h中:

_uintbyte  Angle;

那么在文件2.c中也引用3.h,在2.c对应头文件2.h中:

extern  _uintbyte  Angle;

编译通过!!!!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值