//...20230707 第一次上电默认发送读卡地址
switch(CARDID)
{
case 1 ... 66: //1-66卡号
if(Card.Power & 0x2)
{
// Card.Power &=~ 0x2;
IWDG_Feed();
LL_mDelay(CARDID * 10); //卡号偏移10ms
RangeData.RangAddr = 1; //默认与1号读卡地址测距
}
break;
case 67 ... 132: //67-132卡号
IWDG_Feed();
LL_mDelay(CARDID * 10); //卡号偏移10ms
RangeData.RangAddr = 2; //默认与1号读卡地址测距
break;
case 133 ... 200: //133-200卡号
IWDG_Feed();
LL_mDelay(CARDID * 10); //卡号偏移10ms
RangeData.RangAddr = 3; //默认与1号读卡地址测距
break;
}
//
以上语句Keil会出现报错
在网上查询原因如下:
首先一般来说,教科书或者大部分资料都是说case后面只能接整型常量或常量表达式。也确实在标准C中确实不能接范围表达式。
但是在开发中却碰见了case 1 … 3(省略号两侧有空格)这种接范围的用法。
经查询可知,GNUC对标准作了扩展,支持case后接一个范围值。
解决办法:
ARMCC中加入支持GNU或C99标准的扩展格式