您的位置:首页 > 其它

MDK中定义共用体遇到的问题

2017-01-16 18:20 134 查看
重整代码的过程中遇到的问题,百度没有找到解决方法,解决后来写一下自己的解决方法。

初衷是想实现寄存器式的操作,既能够位访问,也能够字访问,下面是代码。


typedef struct
{
uint16 ChargeVoltage;
uint16 BatteryVoltage;

union
{
uint8 Status;
struct
{
uint8 external_relay :1 ;
uint8 internal_relay :1 ;
uint8 charger_relay  :1 ;
uint8 user_relay     :1 ;

uint8 st32_power_pin :1;
uint8 router_power_pin :1;
uint8 pc_power_pin :1;
uint8 key_pin :1;
};
};

}SendData_TypeDef;


实际在MDK4.70上使用,编译过程中报错:

struct "<unnaned>" has no field ....


在声明头文件的位置加上
#pragma anon——unions
顺利编译


大致意思了解到是:MDK规则检查比较严,不允许在共用体内声明不带结构体名的结构体。

而上面那句话就是让编译器屏蔽这个检查

找到ARM官方的一个好东西:里面有详细说明

嗯,就酱,欢迎拍砖。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MDK