1、KEIL 警告:warning: #546-D: transfer of control bypasses initialization of:
原因是变量可能不会被初始化而导致错误,将变量声明时赋予初始值即可。
2、warning: #1182-D: a declaration cannot have a label
case 2: /* 激光测距 */
uint8_t Sdata[8]={0xF0, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
uint8_t Rdata[8]={0};
arg_Lstock.Distance = 0;
if(CanOpen_TransData(evt_rsc_push0,rsc_evt_Pushlaser, Leftpush_CANID, Sdata, 5000, Rdata)==0)
{
arg_Lstock.Distance = ((Rdata[2]<<24)|(Rdata[3]<<16)|(Rdata[4]<<8)|(Rdata[5]));
step = 0;
}
else
{
step = -1;
}
printf("Laser Step 2\n");
break;
上网查了一下资料得知在C语言中标签的下一条语句不能是定义变量的表达式,而case恰好就是标签,所以说出现这种情况也是比较正常的,在case的处理语句上加上大括号即可。
3、warning: #69-D: integer conversion resulted in truncation
这个就是传入函数的形参和实参对不上,去函数哪里看下类型进行对应就好了。