下面这条语句在做静态检测时报错,不符合misra-c 2004(c90) 12.2的规则
pst_RxCtrl->buf[pst_RxCtrl->uin_len] = uch_Temp;
结构体定义如下:
typedef struct TransferControl
{
uint8 buf[N_COMMU_BUF];
uint8 uch_status;
uint16 uin_len;
}TRANSCTRL;
12.2的规则描述是“表达式的值在标准所允许的任何运算次序下都应该一致的。”
我把刚才的语句:
pst_RxCtrl->buf[pst_RxCtrl->uin_len] = uch_Temp;
改为
index = pst_RxCtrl->uin_len;
pst_RxCtrl->buf[index ] = uch_Temp;
就符合规范了,翻了翻标准也没发现这两个会有什么直接的差异。
希望论坛的朋友,帮忙解释下。 |