PC-lint编译问题

2020-02-08 12:22发布

各位,我声明了一个这样的变量:
union
{
    struct
    {
        unsigned cell_cap:3;
        unsigned outpow:1;
        unsigned charging:1;
        unsigned :2;
    }
    unsigned char Byte;
}Power_Info
我做一个判断语句,只能写成这个样子:
if(((Power_Info.Byte & 0x07) == 0x00) && ((Power_Info.Byte & 0x8) == 0x00))
才能用PC-lint编译通过,但这样的话我的变量就直接声明成一个普通的unsigned char就得了,里面的位再细分也白分了。
如果写成这样:
if((Power_Info.cell_cap == 0x00) && (Power_Info.OutPow == 0x00))
就会报错:
Implicit binary conbersion from int to unsigned int
如果写成这样:
if((Power_Info.cell_cap == 0b000) && (Power_Info.OutPow == 0b0))
就会报错:
Assuming a binary constant

高人请指教啊!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
huanghaiming
1楼-- · 2020-02-09 09:16
FDA认证需要遵守某个规范,我们上面就选了一个M某某的,要我们用PClint编译全通过,来修改代码规范....
theophilus
2楼-- · 2020-02-09 13:26
MISRA啊,有够受的。
huanghaiming
3楼-- · 2020-02-09 15:46
没错,就是这鸡_巴东西,领导一句话,我忙得我妈都不认识我了!
xizi
4楼-- · 2020-02-09 19:13
 精彩回答 2  元偷偷看……
huanghaiming
5楼-- · 2020-02-09 23:46
解决了,写成那样我现在也忘了,要不就是编译器的原因,要不就是我当时发帖的时候省略了。

一周热门 更多>